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

Я пытаюсь создать макет для 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 накладывает флажок слева от строки.

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

android:button="@null"

если вы хотите установить флажок android для Android, чтобы правильно использовать:

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

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

android:drawableRight="@drawable/selector_check_box"

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

android:gravity="right|center_vertical"
Флажок

full action for use customize:

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

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

enter image description hereenter image description hereenter image description hereenter image description hereenter image description here

Ответ 5

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

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

Ответ 6

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

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

добавить

android:paddingLeft="0dp"

чтобы избежать пустого пространства на флажке слева на каком-либо устройстве. Ссылка источника:

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

ответил zeusboy.

Ответ 7

Попытавшись сделать это сам, я, наконец, это сделал. Вам просто нужно поместить 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
------------------------

Ответ 8

Использование android: 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"/>

Ответ 9

Вы также удалите android: orientation = "vertical", так как Relative layout не поддерживает этот атрибут. Это атрибут 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>

Ответ 10

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

изначально он "wrap_content"

Ответ 11

Если вы собираетесь использовать 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>

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