¿Es posible agregar un poco de espacio entre un RadioButton y la etiqueta mientras se siguen usando los componentes integrados de Android? Por defecto, el texto parece un poco arrugado.
<RadioButton android:id="@+id/rb1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My Text"/>
Probé un par de cosas:
La especificación de margen y relleno parece agregar espacio alrededor de todo el elemento (botón y texto, juntos). Eso tiene sentido, pero no hace lo que necesito.
Crear un elemento de diseño personalizado a través de XML que especifique imágenes para los estados marcado y no marcado, luego agregar algunos píxeles adicionales al lado derecho de cada imagen. Esto debería funcionar, pero ahora está saliendo de la interfaz de usuario predeterminada. (No es el fin del mundo, pero no es ideal)
Agregue espacio en blanco adicional al comienzo de cada etiqueta. Android parece recortar un carácter de espacio inicial, como en "My String", pero especificar unicode U + 00A0, como en "\ u00A0My String" funciona. Esto funciona, pero parece un poco sucio.
¿Alguna mejor solución?
fuente
No estoy seguro de si esto solucionará su problema, pero ¿ha probado la propiedad "Padding left" del botón de opción con un valor de 50dip o más?
fuente
Intenté de varias maneras y terminé con este funcionando correctamente tanto en el emulador como en los dispositivos:
<RadioButton android:background="@android:color/transparent" android:button="@null" android:drawableLeft="@drawable/your_own_selector" android:drawablePadding="@dimen/your_spacing" />
fuente
Añadir el margen entre un botón de radio de su etiqueta por paddingLeft :
android:paddingLeft="10dip"
Simplemente configure su relleno personalizado .
Propiedad xml de RadioButton.
<RadioButton android:id="@+id/radHighest" android:layout_width="wrap_content" android:layout_height="wrap_content" android:button="@drawable/YourImageResource" android:drawablePadding="50dp" android:paddingLeft="10dip" android:text="@string/txt_my_text" android:textSize="12sp" />
Hecho
fuente
Utilice los siguientes atributos XML. Funcionó para mi
Para API <= 16 uso
android:paddingLeft="16dp"
Para API> = 17 uso
android:paddingStart="@16dp"
P.ej:
<android.support.v7.widget.AppCompatRadioButton android:id="@+id/popularityRadioButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:checked="true" android:paddingEnd="@dimen/radio_button_text" android:paddingLeft="@dimen/radio_button_text" android:paddingRight="@dimen/radio_button_text" android:paddingStart="@dimen/radio_button_text" android:text="Popularity" android:textSize="@dimen/sort_dialog_text_size" android:theme="@style/AppTheme.RadioButton" />
Más más: el
drawablePadding
atributo no funciona. Solo funciona si agregó un elemento de dibujo en su botón de opción. Por ejemplo:<RadioButton android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:button="@null" android:drawableEnd="@android:drawable/btn_radio" android:drawablePadding="56dp" android:drawableRight="@android:drawable/btn_radio" android:text="New RadioButton" />
fuente
No puedo probar esto ahora para verificar, pero ¿ha intentado ver si el atributo android: drawablePadding hace lo que necesita?
fuente
final float scale = this.getResources().getDisplayMetrics().density; checkBox.setPadding(checkBox.getPaddingLeft() + (int)(10.0f * scale + 0.5f), checkBox.getPaddingTop(), checkBox.getPaddingRight(), checkBox.getPaddingBottom());
fuente
El relleno entre los dibujables y el texto. Se logrará agregando la línea a continuación en el archivo xml.
android:drawablePadding="@dimen/10dp"
fuente
@dimen/10dp
mala prácticaLo he intentado, "android: paddingLeft" funcionará. paddingLeft solo afectará al texto mientras mantiene la imagen de radio en la posición original.
fuente
El "android: paddingLeft" solo parece funcionar correctamente en Android 4.2.2
He probado casi todas las versiones de Android y solo funciona en la versión 4.2.2.
fuente
Estoy usando un enfoque diferente que creo que debería funcionar en todas las versiones de API. En lugar de aplicar relleno, estoy agregando una vista vacía entre RadioButtons:
<View android:layout_width="20dp" android:layout_height="1dp" />
Esto debería darle un relleno de 20 dp.
fuente
Vine aquí buscando una respuesta y la forma más simple (después de pensar un poco) fue agregar espacio al comienzo de la etiqueta como tal
<RadioGroup android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/btnChangeMode" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:layout_below="@+id/view3" android:gravity="center|left" android:id="@+id/ledRadioGroup"> <RadioButton android:button="@drawable/custom_radio_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" On" android:layout_marginRight="6dp" android:id="@+id/ledon" android:textColor="@color/white" /> <RadioButton android:button="@drawable/custom_radio_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" Off" android:layout_marginLeft="6dp" android:id="@+id/ledoff" android:textColor="@color/white" />
fuente
para mi funciona:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true"> <layer-list> <item android:right="5dp"> <shape android:paddingLeft="5dp" android:shape="oval"> <size android:width="20dp" android:height="20dp" /> <solid android:color="@color/blue" /> </shape> </item> </layer-list> </item> <item android:paddingLeft="5dp" android:state_checked="false"> <layer-list> <item android:right="5dp"> <shape android:paddingLeft="5dp" android:shape="oval"> <size android:width="20dp" android:height="20dp" /> <solid android:color="@color/grey" /> </shape> </item> </layer-list> </item> </selector>
fuente
<RadioButton android:id="@+id/rb1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@null" android:paddingLeft="20dp" android:text="1" android:textColor="@color/text2" android:textSize="16sp" android:textStyle="bold" />
fuente
Puede este código en su archivo XML
<RadioButton android:id="@+id/rButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawablePadding="50dp" android:paddingLeft="10dip" android:text="@string/your_text" />
o usa esto en la clase de actividad
radioButton.setPadding(12, 10, 0, 10);
fuente
Crea un estilo en style.xml como este
<style name="Button.Radio"> <item name="android:paddingLeft">@dimen/spacing_large</item> <item name="android:textSize">16sp</item> </style>
Pon ese estilo en el botón de radio
<RadioButton android:id="@+id/rb_guest_busy" android:layout_width="match_parent" android:layout_height="48dp" android:text="@string/guest_is_waiting" android:textSize="@dimen/font_size_3x_medium" android:drawablePadding="@dimen/spacing_large" android:textColor="@color/color_text_heading_dark" style="@style/Button.Radio"/>
Puede cambiar cualquier atributo igual que el botón, ya que RadioButton hereda indirectamente el botón.
fuente
Sé que es una pregunta antigua, pero con esta solución, finalmente tuve tranquilidad y me olvidé del nivel de API.
RadioGroup vertical del lado izquierdo con vista de texto vertical del lado derecho.
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical"> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RadioGroup> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="8dp" android:gravity="center_vertical" android:text="Radio 1"/> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="8dp" android:gravity="center_vertical" android:text="Radio 2"/> </LinearLayout> </LinearLayout>
fuente
Puede intentar usar el atributo de gravedad del botón de opción.
<RadioButton android:id="@+id/rb_all" android:layout_width="match_parent" android:layout_height="wrap_content" android:checked="true" android:gravity="right|center_vertical" android:padding="@dimen/padding_30dp" android:text="@string/filter_inv_all" android:textColor="@color/black" android:textSize="@dimen/text_size_18" />
Esto alineará el texto al final más a la derecha. Mira la primera radio en la imagen.
fuente