Как правильно выравнивать виджет в горизонтальной линейной компоновке андроида?

Это код, который я использую, и он не работает:

<?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> 

Solutions Collecting From Web of "Как правильно выравнивать виджет в горизонтальной линейной компоновке андроида?"

Попробуйте добавить пустой вид внутри горизонтального LinearLayout перед элементом, который вы хотите увидеть правильно, например:

 <LinearLayout android:layout_width="fill_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> 

Не изменяйте гравитацию 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> 

В качестве дополнения к ответу alcsan вы можете использовать Space поскольку API 14 (Android 4.0 ICE_CREAM_SANDWICH), здесь .

Пространство – это легкий подкласс View, который может использоваться для создания разрывов между компонентами в макетах общего назначения.

 <?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> 

Для приложений, поддерживающих уровни API до 14 лет, существует поддержка android.support.v4.widget.Space с Android Support Library r22.1.0.

С линейной компоновкой

 <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

 <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> 

Установка 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"/> 

Добавьте android:gravity="right" в LinearLayout. Предполагая, что TextView имеет layout_width="wrap_content"

Вы должны использовать 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> 

Я сделал это самым простым способом:

Просто возьмите один 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> 

Надеюсь, это поможет вам.

Просто добавьте android:gravity="right" в макете Liner.

Попытайтесь изменить layout_width на android:layout_width="match_parent" потому что gravity:"right" выравнивает текст внутри layout_width, и если вы выберете содержимое обложки, у него нет места, куда нужно идти, но если вы выберете match parent, он может перейти к право.

linear layout с layout_width="fill_parent" а также виджет с той же layout width + gravity as right , выравнивает его вправо.

Я использую 2 TextView 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> 

Вывод

В случае с 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> 

Попробуй это..

 <?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>