layout_weight - table layout android
Alinear texto a la izquierda, casilla de verificación a la derecha (12)
Úselo como su Ítem LISTA / RECICLADOR. Las siguientes 2 líneas son la clave.
android: textDirection = "ltr" android: layoutDirection = "rtl"
<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:textDirection="ltr"
android:layoutDirection="rtl"
/>
Intento crear un diseño para un ListView, con una casilla de verificación a la derecha y algo de texto a la izquierda. La casilla de verificación debe estar alineada completamente a la derecha y la vista de texto alineada todo el camino a la izquierda de la fila, por ejemplo:
------------------------
text checkbox
------------------------
text checkbox
------------------------
text checkbox
------------------------
Esto es lo que tengo hasta ahora:
<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>
Sin embargo, lo que realmente representa es que TextBox está superponiendo la casilla de verificación, a la izquierda de la fila.
Como ya está usando RelativeLayout, haga uso de sus atributos:
Eliminar android:gravity
de los niños y reemplazarlos por android:layout_alignParentLeft="true"
para TextView y android:layout_alignParentRight="true"
para CheckBox.
Eso posiciona a los niños en relación con las fronteras de los padres. También puede agregar android:layout_centerVertical="true"
a cada elemento secundario para centrar los dos verticales dentro de cada elemento de la lista.
Para obtener más opciones y atributos, consulte la documentation .
Después de tratar de hacer esto yo mismo, finalmente lo hice. Solo tiene que colocar un TextView y un CheckBox en un diseño horizontal, y poner la gravedad en el diseño a la derecha.
Aquí está el código:
<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>
EDITAR: Me di cuenta de que quería texto todo el camino hacia el lado izquierdo de la pantalla. esto colocará la casilla de verificación completamente hacia la derecha y el texto justo al lado, en el lado izquierdo de la casilla de verificación.
Me gusta esto:
------------------------
text checkbox
------------------------
text checkbox
------------------------
text checkbox
------------------------
En la base de Oibaf, es la solución de MSaudi
android:button="@null"
android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
agregar
android:paddingLeft="0dp"
para evitar el espacio vacío en la casilla de verificación del lado izquierdo de algún dispositivo. El enlace fuente:
¿Cómo mostrar la casilla de verificación de Android en el lado derecho?
respondido por zeusboy.
Mi solución en este caso es usar:
<CheckBox
...
android:button="@null"
android:drawableRight="@drawable/my_check"
...
/>
donde my_radio podría ser, por ejemplo, tu selector personalizado! El ejemplo del selector podría ser:
<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>
Si vas a utilizar un diseño relativo, podrías considerar usar los atributos de diseño relativo menos molestos, alignParentLeft y alignParentRight, así:
<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>
Solo ten cuidado con los elementos que se ponen encima de otros elementos.
Simplemente configure el interruptor: Parámetros de diseño -> Ancho a "match_parent"
originalmente es "wrap_content"
También eliminas android: orientation = "vertical" porque el diseño relativo no admite este atributo. Es un atributo del diseño lineal.
Puedes probarlo
<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>
Use CheckedTextView
como reemplazo de todo lo que ha mostrado arriba.
Use android: gravedad = "inicio
<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"/>
Y para obtener el cuadro de la casilla de verificación a la derecha, en los atributos de la casilla de verificación
android:button="@null"
android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
por primera vez debe configurar el button
para @null
android:button="@null"
si quieres activar una sola casilla de verificación de Android, usa a la derecha:
android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
de lo contrario, si desea tener una imagen personalizada para el uso de la casilla de verificación:
android:drawableRight="@drawable/selector_check_box"
y para establecer la gravedad a la derecha:
android:gravity="right|center_vertical"
acción completa para usar personalizar la casilla de verificación:
<?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>
imágenes: