एंड्रॉइड: उपलब्ध स्थान को भरने के लिए दृश्य को कैसे विकसित किया जाए?


90

यह सीधा लगता है, लेकिन मैं यह नहीं कर सकता कि यह कैसे करना है। मेरे पास एक EditText और दो ImageButtons के साथ एक क्षैतिज लेआउट है। मैं चाहता हूं कि ImageButtons एक निश्चित आकार का हो, और EditText लेआउट में शेष स्थान लेने के लिए। इसे किस तरह पूर्ण कर सकते है?

<LinearLayout 
        android:orientation="horizontal"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
        <EditText 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </EditText>
        <ImageButton 
            android:src="@drawable/img1"
            android:layout_width="50dip" 
            android:layout_height="50dip">
        </ImageButton>
        <ImageButton 
            android:src="@drawable/img2"
            android:layout_width="50dip" 
            android:layout_height="50dip">
        </ImageButton>
</LinearLayout>

जवाबों:


51

रिश्तेदार लेआउट में यह कोशिश करो

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content">
    <ImageButton 
        android:id="@+id/btn1"
        android:src="@drawable/icon"
        android:layout_width="50dip" 
        android:layout_height="50dip"
        android:layout_alignParentRight="true"/>
    <ImageButton 
        android:id="@+id/btn2"
        android:src="@drawable/icon"
        android:layout_width="50dip" 
        android:layout_height="50dip"
        android:layout_toLeftOf="@+id/btn1"/>
    <EditText 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/btn2">
    </EditText>

</RelativeLayout>

4
धन्यवाद। यह बहुत अच्छा काम करता है। (सिवाय इसके कि ImageButtons को EditText से पहले परिभाषित किया जाना चाहिए, जैसा कि यूसुफ ने कहा है)।
अब

1
fill_parent - यह स्थिरांक API स्तर 8 से शुरू होता है और इसे {@code match_parent} से बदल दिया जाता है।
ज़ोन

147

यदि आप लेआउट को समान रखना चाहते हैं (जैसे, पाठ के बाद बटन), तो layout_weightसंपत्ति का उपयोग करें fill_parent, इस प्रकार:

<LinearLayout 
    android:orientation="horizontal"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content">
    <EditText 
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    </EditText>
    <ImageButton 
        android:src="@drawable/img1"
        android:layout_width="50dip" 
        android:layout_height="50dip">
    </ImageButton>
    <ImageButton 
        android:src="@drawable/img2"
        android:layout_width="50dip" 
        android:layout_height="50dip">
    </ImageButton>
 </LinearLayout>

EditText'वेट' देने से यह अंतिम हो जाता है और बटन को पूर्वता देता है। अलग-अलग लेआउट_वेइट्स के साथ खेलें और देखें कि आपको कितना मज़ा आ सकता है!


1
धन्यवाद। मेरे पास मेरे लेआउट में 3 क्षेत्र हैं (हेडर, कंटेंट- वेबव्यू और फुटर) इसने वेबव्यू लेआउट_वेट = 1 और फूटर का लेआउट_वेट = 0.
MKK

सिर्फ एक बच्चे को वजन और 0dp स्थापित करने के साथ चाल पता नहीं था .. धन्यवाद!
मार्सेल ब्रो

1
क्या इसे आम तौर पर सर्वोत्तम प्रथा माना जाता है? यह दिलचस्प है कि आप उस क्रम को प्रभावित कर सकते हैं जिसमें एंड्रॉइड विचारों को हल करता है।
सरू फ्रेंकेनफेल्ड

2
चौड़ाई रखी जानी चाहिए 0 मुझे लगता है
बिबासवन बंद्योपाध्याय

19

ठीक है:

<RelativeLayout 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">

        <ImageButton 
            android:id="@+id/button1"
            android:src="@drawable/img1"
            android:layout_width="50dip"
            android:layout_alignParentTop="true" 
            android:layout_height="50dip">
        </ImageButton>
        <ImageButton 
            android:src="@drawable/img2"
            android:layout_width="50dip" 
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@id/button1"
            android:layout_height="50dip">
        </ImageButton>
        <EditText 
            android:layout_below="@id/button"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent">
        </EditText>
</RelativeLayout>

लेआउट के मुख्य बिंदु हैं:

  • निश्चित आकार वाली वस्तुओं को पहले लेआउट में रखा जाता है, इस तरह से जब एंड्रॉइड चीजों की ऊंचाई की गणना करने की बात आती है, तो fill_parentबाद में फाइल में केवल शेष स्थान को ध्यान में रखा जाता है, न कि उस स्थान पर जहां वह संभवतः कब्जा कर सकता है। और कुछ नहीं था
  • एडिटटेक्स्ट की ऊंचाई fill_parent( match_parent2.2+ में) है ताकि यह बाकी उपलब्ध जगह को ऊपर ले जाए

क्षमा करें, आपका प्रश्न पर्याप्त नहीं पढ़ा। यदि आप इसे लंबवत तरीके से करना चाहते हैं तो उपरोक्त कोड उत्तर प्रदान करता है। क्षैतिज लेआउट के लिए @ सुनील द्वारा पोस्ट किया गया कोड काम करना चाहिए।


धन्यवाद यूसुफ। यह काम करता है। हालांकि, मैंने थोड़ा तेज होने का श्रेय सुनील को दिया।
अब

13

सेट का उपयोग करें layout_widthया layout_height, 0dp(ओरिएंटेशन के द्वारा आप शेष स्थान को भरना चाहते हैं)। फिर layout_weightइसे शेष स्थान को भरने के लिए उपयोग करें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.