2011-08-26 14 views
12

मेरे पास लेआउट पर दो बटन हैं, और एक बड़े-स्क्रीन डिवाइस (टैबलेट) पर मैं अपनी चौड़ाई को कैप करना चाहता हूं ताकि वे हास्यास्पद न हों। मुझे maxWidth विशेषता का उपयोग करने की उम्मीद है लेकिन यह स्पष्ट रूप से मेरे परिदृश्य में कुछ भी नहीं करता है। लेआउट परिभाषा यहां दी गई है - बटन अधिकतम चौड़ाई में किसी भी मान को अनदेखा करते हुए, लेआउट की पूरी चौड़ाई का उपयोग करते हैं।एक बटन पर maxWidth क्यों काम नहीं करता है और इसके आसपास कैसे काम करना है?

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
> 
<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:maxWidth="100dp" 
    android:text="Button 1" 
/> 
<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:maxWidth="100dp" 
    android:text="Button 2" 
/> 
</LinearLayout> 

क्यों, और यह कैसे (स्पष्ट रूप से पागल) सीमा को हल करने के लिए?

+0

बटन लेआउट_विड्थ 0 डीपी और wrap_content बटन क्यों नहीं हैं "लेआउट उपनाम का उपयोग करें" के बारे में अनुभाग देखें। – antlersoft

+0

@antlersoft - 0 डीपी चौड़ाई संयोजन के साथ लेआउट_वेट मिलान के साथ संयोजन में यह सुनिश्चित करेगा कि वे एक दूसरे के समान चौड़ाई हैं – ataulm

उत्तर

11

दोनों बटनों से android:layout_weight="1" लाइन निकालें।
जोड़े android:minWidth="50dp" और android:layout_width="wrap_content"

संपादित करें:

आप स्क्रीन आकार के आधार पर मैन्युअल रूप से बटन आकार गणना करनी है। सबसे पहले आपको एक मानक स्क्रीन आकार सेट होना चाहिए। उदाहरण के लिए, यदि आप एक स्क्रीन की चौड़ाई 400px पर एप्लिकेशन विकसित करने, और बटन 100px विस्तृत, तो सभी उपकरणों पर एक ही button width to screen width अनुपात को बनाए रखने के रूप में इस प्रकार है

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
buttonWidth = 100 * (metrics.widthPixels/400); 

उपयोग मामला हो जाएगा के लिए सूत्र है:
हैं स्क्रीन चौड़ाई = 480 पीएक्स, तो बटन चौड़ाई 120px होना चाहिए।

+2

क्यों? तब बटन बिल्कुल स्केल नहीं होंगे, और शून्य की चौड़ाई होगी –

+0

क्या लेआउट की पूरी चौड़ाई को भरने के लिए बटन को खींचने का कारण बनता है। मिनीविड्थ को भी सेट करें और चौड़ाई को 'wrap_content' में 0 डीपी में बदलें। – Ronnie

+0

यदि मैं लेआउट_वेट को हटा देता हूं तो बटन स्केल नहीं करेगा, जो मैं चाहता हूं कि वह करना है। मुझे एक बटन चाहिए जो डिवाइस आकार के साथ स्केल करता है लेकिन केवल अधिकतम आकार तक। –

0

layout_width को wrap_content बनाम 0 डीपी पर सेट करने का प्रयास करें।

+0

यह मैंने कोशिश की कई प्रकारों में से एक है। यह कोई अलग नहीं बनाता है। –

0

चौड़ाई/ऊंचाई, .. यह मेरे विचार में काम कर रहा है हमेशा एक साथ स्थापित किया जाना ahve लगते

 <Button 
      android:text="Center" 
      android:layout_width="100dp" 
      android:layout_height="fill_parent" 
      android:id="@+id/selectionCenterButton" 
      android:minWidth="50dp" 
      android:minHeight="50dp" 
      android:maxWidth="100dp" 
      android:maxHeight="50dp" 
      android:layout_weight="1" /> 

बटन के माता-पिता की एक अधिकतम करने के लिए, सामग्री रैप करने के लिए सेट कर दिया जाता तो नीचे मापता है, लेकिन ऊपर 400 चौड़े (4 बटन)

+0

मेरे लिए काम नहीं किया। –

3

इसे हल करने का अच्छा तरीका स्क्रीन रिज़ॉल्यूशन के विभिन्न संयोजन के लिए एकाधिक लेआउट बनाना है। जब आप कुछ अधिकतम खिंचाव पर जाते हैं, तो एक नया लेआउट बनाएं जिसमें आवश्यक मूल्य हो। http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters

संबंधित मुद्दे