Выровнять текст влево, флажок вправо

Я пытаюсь создать макет для ListView, с флажком справа и некоторым текстом влево. Флажок должен быть выровнен полностью вправо, а TextView выровнен полностью слева от строки, например:

------------------------ text checkbox ------------------------ text checkbox ------------------------ text checkbox ------------------------ 

Это то, что у меня есть до сих пор:

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:paddingLeft="5dip" android:paddingRight="5dip" android:paddingTop="8dip" android:paddingBottom="8dip" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left" /> <CheckBox android:id="@+id/chekcbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right" /> </RelativeLayout> 

Тем не менее, то, что на самом деле отображается, это TextBox, накладывающий флажок слева от строки.

Solutions Collecting From Web of "Выровнять текст влево, флажок вправо"

Поскольку вы уже используете RelativeLayout, используйте его атрибуты:

Удалите android:gravity от детей и замените их на android:layout_alignParentLeft="true" для TextView и android:layout_alignParentRight="true" для CheckBox.

Это положение детей относительно границ родителей. Вы также можете добавить android:layout_centerVertical="true" для каждого ребенка, чтобы android:layout_centerVertical="true" две вертикали внутри каждого элемента списка.

Дополнительные параметры и атрибуты см. В документации .

Используйте CheckedTextView в качестве замены всего, что вы показали выше.

И чтобы установить поле флажка справа, в атрибутах флажка

 android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorMultiple" 

Для первого раза вы должны установить button @null

 android:button="@null" 

Если вы хотите onl переместить андроид флажок для правильного использования:

 android:drawableRight="?android:attr/listChoiceIndicatorMultiple" 

В противном случае, если вам нравится иметь пользовательское изображение для использования флажка:

 android:drawableRight="@drawable/selector_check_box" 

И для установки силы тяжести вправо:

 android:gravity="right|center_vertical" 

Полное действие для использования настроить флажок:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/_ics_btn_check_on" /> <item android:state_window_focused="false" android:state_enabled="true" android:state_checked="false" android:drawable="@drawable/_ics_btn_check_off" /> <item android:state_enabled="true" android:state_checked="true" android:state_pressed="true" android:drawable="@drawable/_ics_btn_check_on_pressed" /> <item android:state_enabled="true" android:state_checked="false" android:state_pressed="true" android:drawable="@drawable/_ics_btn_check_off_pressed" /> <item android:state_enabled="true" android:state_checked="false" android:drawable="@drawable/_ics_btn_check_off" /> <item android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/_ics_btn_check_on" /> <item android:state_window_focused="false" android:state_checked="true" android:drawable="@drawable/_ics_btn_check_on_disabled" /> <item android:state_window_focused="false" android:state_checked="false" android:drawable="@drawable/_ics_btn_check_off_disabled" /> <item android:state_checked="false" android:drawable="@drawable/_ics_btn_check_off_disabled" /> <item android:state_checked="true" android:drawable="@drawable/_ics_btn_check_on_disabled" /> </selector> 

изображений :

Введите описание изображения здесьВведите описание изображения здесьВведите описание изображения здесьВведите описание изображения здесьВведите описание изображения здесь

Мое решение в этом случае – использовать:

 <CheckBox ... android:button="@null" android:drawableRight="@drawable/my_check" ... /> 

Где my_radio может быть, например, пользовательским селектором! Пример селектора может быть:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/check_checked" /> <item android:state_checked="false" android:drawable="@drawable/check_unchecked" /> </selector> 

В основе Oibaf – это решение MSaudi

 android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorMultiple" 

добавить

 android:paddingLeft="0dp" 

Чтобы избежать пустого пространства на флажке слева на каком-либо устройстве. Исходная ссылка:

Как показать флажок андроида на правой стороне?

Ответил zeusboy.

Попытавшись сделать это сам, я, наконец, сделал это. Вам просто нужно поместить TextView и CheckBox в горизонтальную компоновку и поместить гравитацию на макет справа.

Вот код:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:gravity="right" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/LabelText" /> <CheckBox android:id="@+id/ChecKBox_id" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

EDIT: Я только заметил, что вы хотите текст полностью в левой части экрана. Это поместит флажок до упора вправо и текст рядом с ним в левой части флажка.

Как это:

 ------------------------ text checkbox ------------------------ text checkbox ------------------------ text checkbox ------------------------ 

Использовать андроид: gravity = "start

  <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Has Diploma:" android:textSize="15dp" android:id="@+id/checkBox_HasDiploma" android:gravity="start"/> 

Вы также удаляете андроид: ориентация = «вертикальная», поскольку относительная компоновка не поддерживает этот атрибут. Это атрибут Linear Layout.

Можешь попробовать

 <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingBottom="8dip" android:paddingLeft="5dip" android:paddingRight="5dip" android:paddingTop="8dip" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:text="check" /> <CheckBox android:id="@+id/chekcbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" /> </LinearLayout> 

Просто установите переключатель: Параметры макета -> Ширина до "match_parent"

Первоначально это "wrap_content"

Если вы собираетесь использовать relativelayout, вы можете рассмотреть использование менее раздражающих атрибутов relativelayout, alignParentLeft и alignParentRight, например:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:paddingLeft="5dip" android:paddingRight="5dip" android:paddingTop="8dip" android:paddingBottom="8dip" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:alignParentLeft="true" /> <CheckBox android:id="@+id/chekcbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:alignParentRight="true" /> </RelativeLayout> 

Просто следите за тем, чтобы элементы попадали поверх других элементов.