2011-01-31 16 views
53

के माध्यम से टेक्स्टव्यू के लिए wrap_content की चौड़ाई निर्धारित करना क्या कोई मुझे TextView से wrap_content पर कोड के माध्यम से और एक्सएमएल से नहीं सेट करने में मदद कर सकता है?कोड

मैं गतिशील रूप से TextView कोड में बना रहा हूं, तो क्या इसकी चौड़ाई को कोड के माध्यम से wrap_content पर सेट करने के लिए वैसे भी है?

उत्तर

86
TextView pf = new TextView(context); 
pf.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

या

parentView.addView(pf, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
+1

क्या बीच का अंतर है वो दो कोड? –

+6

'android.view.ViewGroup $ लेआउट पैराम्स को android.widget.LinearLayout $ लेआउट पैराम ' –

+0

अच्छी तरह से नहीं किया जा सकता है, मुख्य अंतर यह है कि पहले कोड में हम पहले से ही उस सेटिंग के साथ एक नया टेक्स्ट व्यू बना रहे हैं। दूसरे में, हम एक मौजूदा दृश्य में जोड़ रहे हैं, और हम उन पैरामीटर को भी सेट कर रहे हैं। कास्ट समस्या के लिए, मुझे लगता है कि आपको उचित कक्षा – Franco

53

एक और तरीका एक ही परिणाम प्राप्त करने के लिए नहीं है। मामले में आप उदाहरण 'ऊंचाई' के लिए, केवल एक पैरामीटर निर्धारित करने की आवश्यकता:

TextView textView = (TextView)findViewById(R.id.text_view); 
ViewGroup.LayoutParams params = textView.getLayoutParams(); 
params.height = ViewGroup.LayoutParams.WRAP_CONTENT; 
textView.setLayoutParams(params); 
+0

डालना होगा यह बहुत अच्छा काम करता है। यदि यह 'लीनियरलाउट' पर किया जाता है तो ऐसा नहीं लगता है कि 'll.invalidate()' आवश्यक है। क्यूं कर? –

26

परिवर्तन TextView के लिए सरल समाधान चौड़ाई WRAP_CONTENT को

textView.getLayoutParams().width = LinearLayout.LayoutParams.WRAP_CONTENT; // For change `TextView` width to `WRAP_CONTENT` 
//textView.getLayoutParams().width = 200; // For change `TextView` width to 200 

आशा इस मदद

+3

सरल और सही समाधान, क्योंकि यह अन्य पैरामीटर को ओवरराइड नहीं करता है। – CoolMind

+0

हटाए जाने के लिए मेरे एवर को चिह्नित किया क्योंकि यह बहुत आसान है। – FrankKrumnow

+1

यह सबसे अच्छा समाधान है –