2012-04-15 21 views
39

यह मेरा विचार है, और मैं लेआउट_विड्थ को "10 डीआईपी" में बदलना चाहता हूं। मैं प्रोग्रामेटिक तरीके से ऐसा कैसे करूं? नोट, यह एक रैखिक लेआउट नहीं है, यह एक दृश्य है।एंड्रॉइड व्यू लेआउट_विड्थ - प्रोग्रामेटिक रूप से कैसे बदलें?

<View android:id="@+id/nutrition_bar_filled" 
    android:background="@drawable/green_rectangle" 
    android:layout_height="30dip" 
    android:layout_width="50dip"> 
</View> 

मुझे लेआउटपैम के बारे में पता है। चौड़ाई को 10 डीआईपी सेट करने के लिए मैं इसका उपयोग कैसे करूं?

उत्तर

113

मेरा मानना ​​है कि आपके सवाल का गतिशील रूप से देखने का केवल चौड़ाई बदलने के लिए है, जबकि उपरोक्त विधियों नया करने के लिए पूरी तरह से लेआउट गुणों बदल जाएगा है, इसलिए मैं पहले देखने से LayoutParams प्राप्त करने का सुझाव देता हूं, फिर लेआउट पर चौड़ाई सेट करें, और आखिर में लेआउटपरैम को दृश्य में सेट करें, इसलिए ऐसा करने के लिए नीचे दिए गए चरणों का पालन करें।

View view_instance = (View)findViewById(R.id.nutrition_bar_filled); 
LayoutParams params=view_instance.getLayoutParams(); 
params.width=newOne; 
view_instance.setLayoutParams(params); 
+12

आप "view_instance.getLayoutParams()। width = newOne भी कर सकते हैं;" –

+8

'match_parent' जैसे मान प्राप्त करने के लिए, यह काम करता है: 'LayoutParams.MATCH_PARENT' – gnB

+0

@ टोनीविकम यह कैसे काम करता है? – snayde

8

का उपयोग कर

View view_instance = (View)findViewById(R.id.nutrition_bar_filled); 
view_instance.setWidth(10); 

उपयोग Layoutparams ऐसा करने के लिए आप नीचे दिए गए की तरह चौड़ाई और ऊंचाई सेट कर सकते हैं जहां की कोशिश करो।

LayoutParams lp = new LayoutParams(10,LayoutParams.wrap_content); 
View_instance.setLayoutParams(lp); 
+0

आप स्पष्ट कर सकते हैं? मैं आपको सही उत्तर के रूप में चिह्नित करने के लिए लगभग तैयार हूं। मैं view_instance कैसे प्राप्त करूं? –

+0

@ हिसाका दृश्य देखने के लिए 'findViewById (R.id.nutrition_bar_filled)' का उपयोग करें –

+0

यह पहली बात है जिसकी मैंने कोशिश की थी। बहुत सहज ज्ञान युक्त, अभी तक सेटविड्थ एक दृश्य के लिए एक वैध कार्य नहीं है। FillBar = rowView.findViewById देखें (R.id.nutrition_bar_filled); fullBar.setWidth (10) <- मान्य नहीं है। –

10

आप यह भी तरह ऊंचाई और चौड़ाई निर्धारित कर सकते हैं:

viewinstance.setLayoutParams(new LayoutParams(width, height)); 
+8

मुझे लगता है कि यह गलत दृष्टिकोण है, यह सेट किए गए किसी भी अन्य लेआउट विशेषताओं को खो देगा। layout_gravity – mwk

3

या बस:

view.getLayoutParams().width = 400; 
view.requestLayout(); 
संबंधित मुद्दे