एक रेखीय लेआउट के अंदर सामग्री को कैसे केंद्रित करें?


155

मैं ImageViewएक LinearLayoutक्षैतिज और लंबवत रूप से केंद्र के अंदर जाने की कोशिश कर रहा हूं , लेकिन मैं ऐसा नहीं कर सकता। इसका मुख्य कारण यह है कि मैं इसके RelativeLayoutलिए उपयोग नहीं कर रहा हूं क्योंकि मुझे इसकी आवश्यकता है layout_weight(मेरे Activityचार कॉलम शामिल हैं जो समान रूप से विभाजित होने चाहिए, और विभिन्न स्क्रीन चौड़ाई के लिए भी उत्तरदायी हैं, प्रत्येक कॉलम एक ImageViewकेंद्रित और अस्थिर है)।

यहाँ अब तक मेरा xml है:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000"
    android:baselineAligned="false"
    android:gravity="center"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".Main" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1" >

        <ImageView
            android:id="@+id/imageButton_speak"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/image_bg"
            android:src="@drawable/ic_speak" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1" >

        <ImageView
            android:id="@+id/imageButton_readtext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/image_bg"
            android:src="@drawable/ic_readtext" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1" >

        <ImageView
            android:id="@+id/imageButton_edit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/image_bg"
            android:src="@drawable/ic_edit" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1" >

        <ImageView
            android:id="@+id/imageButton_config"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/image_bg"
            android:src="@drawable/ic_config" />
    </LinearLayout>
</LinearLayout>

आप चाहते हैं और वर्तमान स्क्रीनशॉट के रूप में पोस्ट स्क्रीन शॉट
योगेश Tatwal

जवाबों:


381

android:gravity अपने बच्चों के संरेखण को संभालती है,

android:layout_gravity खुद के संरेखण को संभालता है।

इसलिए इनमें से किसी एक का उपयोग करें।

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000"
    android:baselineAligned="false"
    android:gravity="center"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".Main" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center" >

        <ImageView
            android:id="@+id/imageButton_speak"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/image_bg"
            android:src="@drawable/ic_speak" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center" >

        <ImageView
            android:id="@+id/imageButton_readtext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/image_bg"
            android:src="@drawable/ic_readtext" />
    </LinearLayout>

    ...
</LinearLayout>

या

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000"
    android:baselineAligned="false"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".Main" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1" >

        <ImageView
            android:id="@+id/imageButton_speak"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@drawable/image_bg"
            android:src="@drawable/ic_speak" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1" >

        <ImageView
            android:id="@+id/imageButton_readtext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@drawable/image_bg"
            android:src="@drawable/ic_readtext" />
    </LinearLayout>

    ...
</LinearLayout>

"एंड्रॉइड: लेआउट_ग्रेविटी खुद का ख्याल रखती है।" कहना होगा कि अभिभावक द्वारा लेआउट ग्रेविटी का उपयोग किया जाता है।
ataulm

36

android:layout_gravity लेआउट के लिए ही उपयोग किया जाता है

android:gravity="center"अपने बच्चों के लिए उपयोग करेंLinearLayout

तो आपका कोड होना चाहिए:

<LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_weight="1" >

7

मैं यहाँ वर्णित समाधान की कोशिश की, लेकिन यह मेरी मदद नहीं की। मुझे लगता है कि समाधान को मूल्य के रूप में layout_widthउपयोग करना है wrap_content

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_weight="1" >

5

यहाँ कुछ नमूना कोड है। इसने मेरे लिए काम किया।

<LinearLayout
    android:gravity="center"
    >
    <TextView
        android:layout_gravity="center"
        />
    <Button
        android:layout_gravity="center"
        />
</LinearLayout>

इसलिए आप अपने सभी कंटेंट (TextView और Button) को इसके केंद्र में रखने के लिए Linear Layout को डिज़ाइन कर रहे हैं, और फिर TextView और Button को रैखिक लेआउट के केंद्र के सापेक्ष रखा गया है।


1
सरल। 'गुरुत्वाकर्षण' विशेषता एक दृश्य की सामग्री को प्रभावित करती है। तो इस मामले में LinearLayout की सामग्री क्या है? एक TextView और एक बटन। वास्तव में आप लेआउट प्रबंधक को निर्देश दे रहे हैं कि रैखिक लेआउट की किसी भी सामग्री को केंद्रीकृत करें।
PCodex

2

android:gravity अपने बच्चों को संरेखित करने के लिए एक लेआउट पर इस्तेमाल किया जा सकता है।

android:layout_gravity अपने माता-पिता में खुद को संरेखित करने के लिए किसी भी दृश्य पर उपयोग किया जा सकता है।

ध्यान दें: यदि स्वयं या बच्चे अपेक्षा के अनुरूप नहीं हैं, तो जाँच करें कि चौड़ाई / ऊँचाई है match_parentऔर किसी और चीज़ में बदलें

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