Android 4.2 RadioButton android: drawableLeft error?
Android 4.2 no muestra RadioButton correctamente cuando android: drawableLeft se utiliza. DrawableRight está bien.
El dibujable en el lado izquierdo se superpone al gráfico del botón de radio. Y al menos Android 2.2-4.1 parecen estar bien con drawableLeft.
- Cambie la posición central del efecto de la ondulación del androide para el botón de radio de Appcompat del androide
- Falta la selección de elementos del centrifugador
- Android: Guardar estado de botones de radio
- ¿Cómo comprobar si "Radiobutton" está marcado?
- Cómo reducir el tamaño del botón de radio en android
¿Usted sabe sobre la solución para esto? El ajuste de drawableLeft por programa no funcionó para resolver este problema.
4.2 Edición de Android
4.1 Android hace esto correctamente (también al menos Android 2.2-4.0 hacer esto correctamente también)
El código de diseño XML de Android para esto:
<RadioButton android:id="@+id/radio_cloud_dropbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:drawableLeft="@drawable/dropbox_logo" android:checked="true" android:text="@string/lbl_cloud_dropbox" />
- Botones de radio Establecer el estado comprobado a través del código
- Cómo centrar el texto en el botón de opción
- Android problema RadioButton en android 4
- Creación de RadioButtons mediante programación
- Cómo adjuntar un oyente a un botón de radio
- Varios botones de radio de la fila en android?
- Selección de botones de radio Cambia Toast en Android
- Android RadioButton opción en el lado derecho del texto
Puede utilizar en el botón de opción:
Ajuste el botón @null y el conjunto de izquierda dibujable que su botón:
<RadioGroup android:id="@+id/hn_radio_group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <RadioButton android:id="@+id/rb_Select_by_proposal" style="@style/RadioButtonText" android:checked="true" android:tag="1" android:text="@string/select_by_proposal" /> <RadioButton android:id="@+id/rb_Select_by_first_letter" style="@style/RadioButtonText" android:tag="2" android:text="@string/select_by_first_letter" /> </RadioGroup>
Y este el estilo:
<style name="RadioButtonText"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:button">@null</item> <item name="android:drawableLeft">@drawable/radio_selector</item> <item name="android:drawablePadding">10dp</item> </style>
Para el espacio entre el botón y el uso del texto en:
<item name="android:drawablePadding">10dp</item>
Es probable que sea un producto del nuevo soporte de dirección de diseño que se agregó a la plataforma en Android 4.2 (es decir, para soportar el diseño de izquierda a derecha o de derecha a izquierda). Esto afecta la forma en que colocan el contenido extraíble izquierdo vs. derecho. ¿Cuál es el atributo de manifiesto android:targetSdkVersion
establecido en? Técnicamente, creo, si se establece en 16 o por debajo de estos cambios de diseño se debe desactivar de forma predeterminada, incluso si su configuración regional de otro modo permitir.
Yo recomendaría archivar un error en http://b.android.com , porque en modo RTL esperaría que el botón dibujable para estar en el otro lado también. Mientras tanto, puede intentar forzar la dirección de diseño agregando un atributo layoutDirection
a su TextView
y forzándolo a que sea LTR para que se vea como se espera. También puede llamar a esto desde el código Java con setLayoutDirection()
Mi solución temporal a este error era reemplazar el diseño de RadioGroup
padre por TableLayout
con TableRow
(s) que contiene RadioButton
y TextView
. Aunque hay otras soluciones también.
<TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TableRow android:onClick="onDropboxClick" > <RadioButton android:id="@+id/radio_cloud_dropbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:onClick="onDropboxClick" /> <TextView android:drawableLeft="@drawable/cloud_logo_dropbox" android:gravity="center_vertical" android:text="Dropbox" /> </TableRow> <TableRow android:onClick="onGoogleDriveClick" > <RadioButton android:id="@+id/radio_cloud_google_drive" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:onClick="onGoogleDriveClick" /> <TextView android:drawableLeft="@drawable/cloud_logo_google_drive" android:gravity="center_vertical" android:text="Google Drive" /> </TableRow> </TableLayout>
Sin embargo, como RadioGroup
no se pudo utilizar con diseños anidados, la selección / deselección del estado marcado debe realizarse manualmente en la actividad asociada en los métodos del controlador de eventos:
public void onDropboxClick(View view) { checkRadio(R.id.radio_cloud_dropbox); } public void onGoogleDriveClick(View view) { checkRadio(R.id.radio_cloud_google_drive); } private void checkRadio(int radioId) { if (radioId == R.id.radio_cloud_dropbox) { dropboxRadio.setChecked(true); googleDriveRadio.setChecked(false); } else if (radioId == R.id.radio_cloud_google_drive) { dropboxRadio.setChecked(false); googleDriveRadio.setChecked(true); } }
Esto parece estar arreglado en Android 4.2.2.
- Prevenir la superposición parcial de la forma
- Service.startForeground () lanza NullPointerException cuando se ejecuta con ServiceTestCase