android - स्क्रीन के नीचे विचारों को कैसे संरेखित करें?




xml user-interface (12)

1. अपने रूट लेआउट में constraintLayout का उपयोग करें

और app:layout_constraintBottom_toBottomOf="parent" सेट करें app:layout_constraintBottom_toBottomOf="parent" स्क्रीन के नीचे लेआउट को जाने के लिए

<LinearLayout
    android:id="@+id/LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintBottom_toBottomOf="parent">
</LinearLayout>

2. अपने रूट लेआउट में FrameLayout का उपयोग करें

बस अपने लेआउट में android:layout_gravity="bottom" सेट करें android:layout_gravity="bottom"

<LinearLayout
    android:id="@+id/LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:orientation="horizontal">
</LinearLayout>

3. अपने रूट लेआउट में LinearLayout का उपयोग करें ( android:orientation="vertical" )

(1) लेआउट android:layout_weight="1" सेट करें android:layout_weight="1" अपने लेआउट के शीर्ष पर

<TextView
    android:id="@+id/TextView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:text="welcome" />

(2) android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" लिए बच्चे LinearLayout सेट करें android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom"

मुख्य विशेषता ndroid:gravity="bottom" , बच्चे को लेआउट के नीचे देखें।

<LinearLayout
    android:id="@+id/LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    android:orientation="horizontal">
</LinearLayout>

4. मूल लेआउट में RelativeLayout Layout का उपयोग करें

और android:layout_alignParentBottom="true" सेट करें android:layout_alignParentBottom="true" स्क्रीन के नीचे लेआउट को जाने दें

<LinearLayout
    android:id="@+id/LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal">
</LinearLayout>

आउटपुट

मेरा लेआउट कोड यहाँ है;

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:text="@string/welcome" 
        android:id="@+id/TextView" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    </TextView>

    <LinearLayout android:id="@+id/LinearLayout" 
        android:orientation="horizontal"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:gravity="bottom">

            <EditText android:id="@+id/EditText" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content">
            </EditText>

            <Button android:text="@string/label_submit_button" 
                android:id="@+id/Button" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </Button>

    </LinearLayout>

</LinearLayout>

ऐसा लगता है कि बाईं ओर क्या है और मैं इसे किस तरह दिखाना चाहता हूं, दाईं तरफ है।

स्पष्ट उत्तर टेक्स्टव्यू को ऊंचाई पर fill_parent पर सेट करना है, लेकिन इससे बटन या एंट्री फ़ील्ड के लिए कोई कमरा छोड़ा नहीं जा सकता है। अनिवार्य रूप से मुद्दा यह है कि मैं सबमिट बटन और टेक्स्ट एंट्री को नीचे की एक निश्चित ऊंचाई और शेष स्थान को भरने के लिए टेक्स्ट व्यू चाहता हूं, इसी तरह क्षैतिज रैखिक लेआउट में मैं सबमिट बटन को अपनी सामग्री को लपेटना चाहता हूं और शेष स्थान को भरने के लिए पाठ प्रविष्टि के लिए।

यदि रैखिक लेआउट में पहली वस्तु को fill_parent करने के लिए कहा जाता है, तो यह ठीक है कि, अन्य वस्तुओं के लिए कोई जगह नहीं छोड़कर, मैं एक आइटम कैसे प्राप्त करूं जो पहले रैखिक लेआउट में है, बाकी के बाकी हिस्सों के अलावा सभी जगहों को भरने के लिए लेआउट में आइटम?

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

सापेक्ष लेआउट वास्तव में जवाब थे - धन्यवाद!

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">

    <TextView 
        android:text="@string/welcome" 
        android:id="@+id/TextView"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true">
    </TextView>

    <RelativeLayout 
        android:id="@+id/InnerRelativeLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >

        <Button 
            android:text="@string/label_submit_button" 
            android:id="@+id/Button"
            android:layout_alignParentRight="true" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </Button>

        <EditText 
            android:id="@+id/EditText" 
            android:layout_width="fill_parent"
            android:layout_toLeftOf="@id/Button"
            android:layout_height="wrap_content">
        </EditText>

    </RelativeLayout>

</RelativeLayout>

अपने काम को बोतने के लिए नीचे कोड संरेखण बटन का उपयोग करें

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btn_back"
        android:layout_width="100dp"
        android:layout_height="80dp"
        android:text="Back" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.97"
        android:gravity="center"
        android:text="Payment Page" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:layout_weight="1"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="Submit"/>
    </LinearLayout>

</LinearLayout>

आप इसे लाइनरलाइट या स्क्रॉलव्यू के साथ भी कर सकते हैं। कभी-कभी एक रिलेटिवलाउट लागू करना आसान होता है। केवल एक चीज जो आपको करने की ज़रूरत है वह है कि आप दृश्यों से पहले निम्नलिखित दृश्य जोड़ना चाहते हैं, जिसे आप स्क्रीन के नीचे संरेखित करना चाहते हैं:

<View
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1" />

यह रिक्त स्थान भरता है, खाली स्थान भरता है और अगले दृश्य को स्क्रीन के नीचे दबाता है।


आप रैखिक लेआउट के भीतर रिश्तेदार लेआउट को घोंसले से अपना प्रारंभिक रैखिक लेआउट रख सकते हैं:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:text="welcome" 
        android:id="@+id/TextView" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    </TextView>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button android:text="submit" 
            android:id="@+id/Button" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true">
        </Button>
        <EditText android:id="@+id/EditText" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/Button"
            android:layout_alignParentBottom="true">
        </EditText>
    </RelativeLayout>
</LinearLayout>

इस तरह के मामले के लिए हमेशा रिलेवेटिव लेआउट का उपयोग करें। एक लाइनरलाउट इस तरह के उपयोग के लिए नहीं है।

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/db1_root"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!-- Place your layout here -->

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_gravity="bottom"
    android:orientation="horizontal"
    android:paddingLeft="20dp"
    android:paddingRight="20dp" >

    <Button
        android:id="@+id/setup_macroSavebtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Save" />

    <Button
        android:id="@+id/setup_macroCancelbtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Cancel" />

    </LinearLayout>

</RelativeLayout>

उपरोक्त उत्तर (जेनुज़ द्वारा) काफी सही है, लेकिन मैं व्यक्तिगत रूप से सापेक्ष लेआउट के साथ 100% confortable महसूस नहीं करता, इसलिए मैं इस तरह एक 'filler', खाली TextView पेश करना पसंद करते हैं:

<!-- filler -->
<TextView android:layout_height="0dip" 
          android:layout_width="fill_parent"
          android:layout_weight="1" />

उस तत्व से पहले जो स्क्रीन के नीचे होना चाहिए।


मुझे लगता है कि आपको रिश्तेदार लेआउट का प्रयास करना चाहिए।
यदि आपके पास एक सापेक्ष लेआउट है जो पूरी स्क्रीन भरता है तो आपको स्क्रीन के नीचे बटन को ले जाने के लिए android:layout_alignParentBottom का उपयोग करने में सक्षम होना चाहिए android:layout_alignParentBottom

यदि नीचे दिए गए आपके विचार किसी रिश्तेदार लेआउट में नहीं दिखाए जाते हैं तो शायद ऊपर दिए गए लेआउट में सभी जगहें लगती हैं। इस मामले में आप उस दृश्य को डाल सकते हैं जो नीचे लेना चाहिए, पहले अपनी लेआउट फ़ाइल में और android:layout_above साथ दृश्यों के ऊपर शेष लेआउट को स्थिति में android:layout_above । यह नीचे की दृष्टि को उतनी जगह ले जाने में सक्षम बनाता है जितना इसकी आवश्यकता होती है और बाकी का लेआउट शेष स्क्रीन को भर सकता है।


मैंने जेनुज़ द्वारा पोस्ट किए गए समाधान का उपयोग किया, लेकिन आखिरी दृश्य में पैडिंग जोड़ा क्योंकि मेरे लेआउट के शीर्ष भाग को स्क्रॉलव्यू था। ScrollView आंशिक रूप से छुपाया जाएगा क्योंकि यह सामग्री के साथ बढ़ता है। एंड्रॉइड का उपयोग करना: अंतिम दृश्य पर पैडिंगबॉटम स्क्रॉलव्यू में सभी सामग्री को दिखाने में मदद करता है।


यदि आपके पास इस तरह का पदानुक्रम है:

<ScrollView> 
  |-- <RelativeLayout> 
    |-- <LinearLayout>

सबसे पहले, android:fillViewport="true" लागू करें android:fillViewport="true" और फिर android:layout_alignParentBottom="true" लागू करें android:layout_alignParentBottom="true" LinearLayout

यह मेरे लिए पूरी तरह से काम किया।

<ScrollView
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:scrollbars="none"
    android:fillViewport="true">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:id="@+id/linearLayoutHorizontal"
            android:layout_alignParentBottom="true">
        </LinearLayout>
    </RelativeLayout>
</ScrollView>

यह भी काम करता है।

<LinearLayout 
    android:id="@+id/linearLayout4"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_below="@+id/linearLayout3"
    android:layout_centerHorizontal="true"
    android:orientation="horizontal" 
    android:gravity="bottom"
    android:layout_alignParentBottom="true"
    android:layout_marginTop="20dp"
>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" 

    />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" 


    />

</LinearLayout>


हेडर और फूटर दोनों बनाना, यहां एक उदाहरण है

[लेआउट एक्सएमएल]

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/backgroundcolor"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:background="#FF0000">
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"
        android:background="#FFFF00">
    </RelativeLayout>

</RelativeLayout>

[स्क्रीनशॉट]

उम्मीद है कि यह सहायक है। धन्यवाद!!


ScrollView यह काम नहीं करता है, क्योंकि ScrollView पृष्ठ के निचले हिस्से में ScrollView में जो भी हो, ओवरलैप करेगा।

मैंने गतिशील रूप से फैले हुए FrameLayout का उपयोग करके इसे ठीक किया है:

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent" 
    android:layout_width="match_parent"
    android:fillViewport="true">
    <LinearLayout 
        android:id="@+id/LinearLayout01"
        android:layout_width="match_parent" 
        android:layout_height="match_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical">

                <!-- content goes here -->

                <!-- stretching frame layout, using layout_weight -->
        <FrameLayout
            android:layout_width="match_parent" 
            android:layout_height="0dp"
            android:layout_weight="1">
        </FrameLayout>

                <!-- content fixated to the bottom of the screen -->
        <LinearLayout 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content"
            android:orientation="horizontal">
                                   <!-- your bottom content -->
        </LinearLayout>
    </LinearLayout>
</ScrollView>




android-layout