Выровнять текст влево, флажок вправо
Я пытаюсь создать макет для 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 here]()
![enter image description here]()
![enter image description here]()
![enter image description here]()
![enter 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>
Просто следите за тем, чтобы элементы попадали поверх других элементов.