क्षैतिज रैखिक लेआउट एंड्रॉइड में विजेट को कैसे दाएं संरेखित करें?


205

यह वह कोड है जिसका मैं उपयोग कर रहा हूं और यह काम नहीं कर रहा है:

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

    <TextView android:text="TextView" android:id="@+id/textView1"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:gravity="right">
    </TextView>

</LinearLayout>

जवाबों:


418

उस तत्व से पहले Viewक्षैतिज के अंदर खाली जोड़ने का प्रयास करें LinearLayoutजिसे आप सही देखना चाहते हैं, जैसे:

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

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

11
यह काम! लेकिन कोई भी समझा सकता है क्यों? मैं पूरी तरह से समझ नहीं सका।
GMsoF

28
खाली दृश्य बटन के लिए जगह छोड़कर, अधिकतम स्थान लेने की कोशिश कर रहा है।
एलकसन

14
अब तक यह केवल एक चीज है जो मेरे लिए बाईं ओर कुछ बटन और दाईं ओर एक अंतिम बटन की कोशिश में काम करती है। लेकिन यह मुझे एक हैक की तरह लगता है। क्या ऐसा करने का कोई "सही" तरीका है?
17

8
यह कमाल का है! लेकिन गुरुत्वाकर्षण = "सही" इस तरह से शुरू से ही काम क्यों नहीं करता है? इसे इस अन्य दृष्टिकोण से मदद की आवश्यकता क्यों है? और यह कैसे "सही" है, अगर यह अतिरिक्त दृश्य के बिना नहीं है?
दोपहर

1
यह ग्रिड की तरह लेआउट में काम नहीं करता है - कोई खाली जगह नहीं है। शेरिफ इल्हातिब का हल काम करता है।
cdonner

119

LinearLayout के गुरुत्वाकर्षण को "सही" में न बदलें यदि आप नहीं चाहते कि सब कुछ सही हो।

प्रयत्न:

  1. TextView के बदले चौड़ाई के लिएfill_parent
  2. TextView के गुरुत्वाकर्षण को बदलेंright

कोड:

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

1
इसके लिए धन्यवाद - यह fill_parent की चौड़ाई थी जो मुझे फेंक रही थी
dldnh

2
क्या रेखीय लेआउट भी इसे प्राप्त करने के लिए डिज़ाइन किया गया है? क्या किसी को इसे प्राप्त करने के लिए केवल सापेक्ष लेआउट का उपयोग नहीं करना चाहिए? क्या यह समाधान हैक नहीं है?
user2635088

यदि आपके पास LinearLayout में कई TextView नियंत्रण हैं, तो यह काम नहीं करेगा। १२:०२ पर @alcsan
फेलिक्स

यह स्वीकृत उत्तर होना चाहिए। यह दृष्टिकोण किसी भी अतिरिक्त दृश्य का उपयोग नहीं करता है, और इससे भी महत्वपूर्ण बात यह है कि यह लेआउट_वेट का उपयोग नहीं करता है जो प्रदर्शन को काफी कम दिखाता है।
सिर्मिलियन

android:layout_weight = "1"कंधे से कंधा मिलाकर android:gravity="right"चलना चाहिए।
वासिलिस

63

एल्कसन के उत्तर के पूरक के रूप में, आप यहां Spaceएपीआई 14 (Android 4.0 ICE_CREAM_SANDWICH) दस्तावेज़ का उपयोग कर सकते हैं

अंतरिक्ष एक हल्का दृश्य उपवर्ग है जिसका उपयोग सामान्य प्रयोजन लेआउट में घटकों के बीच अंतराल बनाने के लिए किया जा सकता है।

<?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="horizontal" >

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

    <TextView
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:text="TextView"
        android:gravity="right" />

</LinearLayout>

14 से कम उम्र के एपीआई स्तर का समर्थन करने वाले ऐप्स के लिए, android.support.v4.widget.SpaceAndroid समर्थन लाइब्रेरी r22.1.0 है।


महत्वपूर्ण यह है कि आपको
लेआउट_वेट

अच्छी तरह से काम! प्रत्येक तत्व की चौड़ाई को संरक्षित करता है।
फतमान

यह काम। वाह, एंड्रॉइड की कुरूपता मुझे कभी विस्मित करना बंद नहीं करती है
क्रिस नेव

31

रैखिक लेआउट के साथ

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/select_car_book_tabbar"
        android:gravity="right" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:src="@drawable/my_booking_icon" />
    </LinearLayout>

यहां छवि विवरण दर्ज करें

फ़्रेमलैटआउट के साथ

<FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/select_car_book_tabbar">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|right"
            android:src="@drawable/my_booking_icon" />
    </FrameLayout>

RelativeLayout के साथ

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/select_car_book_tabbar">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerInParent="true"
            android:src="@drawable/my_booking_icon" />
    </RelativeLayout>

21

दृश्य की सेटिंग layout_weight="1"ट्रिक करेगी।

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
    android:id="@+id/textView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

<RadioButton
    android:id="@+id/radioButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>


2
इस तरह के एक सरल समाधान +1
एलेक्स

1
अगर कोई अभी भी देख रहा है, तो यह सही समाधान है :)
पासटगेट

यह जादू है! आपको यह कैसे पता चला?
andreikashin

@andreikashin, अगर यह मदद मिली तो एक वोट पर विचार करें। धन्यवाद।
साद महमूद

13

android:gravity="right"LinearLayout में जोड़ें । मान लिया गया TextViewहैlayout_width="wrap_content"


2
उन्होंने खासतौर पर LinearLayout के अंदर एक एकल घटक को संरेखित करने के लिए कहा। रेखीय लेआउट ही नहीं: लेआउट ही fill_parent पर सेट है।
रिची एचएच


4

मैंने इसे सबसे आसान तरीके से किया है:

बस एक RelativeLayout लें और अपने बच्चे के दृश्य को उसमें डालें , जिसे आप दाईं ओर रखना चाहते हैं ।

    <LinearLayout
        android:id="@+id/llMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#f5f4f4"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:paddingBottom="20dp"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:paddingTop="20dp">

        <ImageView
            android:id="@+id/ivOne"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher" />


        <TextView
            android:id="@+id/txtOne"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="Hiren"
            android:textAppearance="@android:style/TextAppearance.Medium"
            android:textColor="@android:color/black" />

        <RelativeLayout
            android:id="@+id/rlRight"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right">


            <ImageView
                android:id="@+id/ivRight"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:src="@drawable/ic_launcher" />

        </RelativeLayout>
    </LinearLayout>

आशा है इससे आपकी मदद होगी।


3

आप एक RelativeLayout का उपयोग करें और बस उन्हें खींचें जब तक यह अच्छा लग रहा है :)

    <ImageView
        android:id="@+id/button_info"
        android:layout_width="30dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="10dp"
        android:contentDescription="@string/pizza"
        android:src="@drawable/header_info_button" />

</RelativeLayout>

2
मल्टी रिज़ॉल्यूशन स्क्रीन के लिए अनुशंसित "उन्हें खींचें"
5

3

linear layoutसाथ layout_width="fill_parent"और भी एक ही साथ विजेट layout width+ gravity as rightसही करने के लिए संरेखित होगा।

मैं TextViewनिम्नलिखित उदाहरणों में 2 s का उपयोग कर रहा हूं , topicTitleबाईं ओर और topicQuestionsदाईं ओर।

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

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="20dp"
        android:orientation="horizontal">

    <TextView
        android:id="@+id/topicTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/topicQuestions"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:textSize="18sp"
        android:textStyle="bold" />
    </LinearLayout>

</RelativeLayout>

उत्पादन


2

लेआउट_ एक्सपोज़र को बदलने का प्रयास करें android:layout_width="match_parent"क्योंकि gravity:"right"लेआउट के अंदर पाठ संरेखित करता है_विकास, और यदि आप रैप सामग्री चुनते हैं तो यह नहीं है कि कहां जाना है, लेकिन यदि आप मैच माता-पिता चुनते हैं तो यह दाईं ओर जा सकता है।


2

किसी भी अतिरिक्त दृश्य या तत्व का उपयोग करने की आवश्यकता नहीं है:

// यह इतना आसान और सरल है

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

// यह संरेखण छोड़ दिया गया है

<TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="No. of Travellers"
      android:textColor="#000000"
      android:layout_weight="1"
      android:textStyle="bold"
      android:textAlignment="textStart"
      android:gravity="start" />

// यह सही संरेखण है

<TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Done"
      android:textStyle="bold"
      android:textColor="@color/colorPrimary"
      android:layout_weight="1"
      android:textAlignment="textEnd"
      android:gravity="end" />

</LinearLayout>

0

TextView के मामले में:

<TextView 
    android:text="TextView" 
    android:id="@+id/textView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"   
    android:gravity="right"
    android:textAlignment="gravity">    
</TextView>

0

दृश्य जोड़ना थोड़ा मुश्किल है और यह इस तरह से सभी स्क्रीन चौड़ाई को कवर करता है:

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

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

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

इस कोड की कोशिश करें:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Create Account"/>

</LinearLayout>

-1

यहाँ एक नमूना है। व्यवस्था की कुंजी इस प्रकार है

android:layout_width="0dp"
android:layout_weight="1"

पूरा कोड

<?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="wrap_content"
    android:orientation="horizontal"
    android:padding="5dp">

    <TextView
        android:id="@+id/categoryName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="abcd" />

    <TextView
        android:id="@+id/spareName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="efgh" />

</LinearLayout>

यहां छवि विवरण दर्ज करें


-1

TextView पाठ को दाईं ओर सेट करने के लिए match_parent और गुरुत्वाकर्षण का उपयोग करें:

<?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="horizontal">

    <TextView android:text="TextView" android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right">
    </TextView>

</LinearLayout>

-2

इसे इस्तेमाल करे..

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



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

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