studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android radio

para - manual de programacion android pdf



cómo colocar el texto a la izquierda de un botón de radio en Android (12)

Agregue android:gravity="right" en cada RadioButton como sigue ...

<RadioGroup android:id="@+id/radios" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_gravity="right" android:inputType="text" android:orientation="vertical" > <RadioButton android:id="@+id/first" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="right" android:background="@color/white" android:button="@null" android:drawablePadding="30dp" android:drawableRight="@android:drawable/btn_radio" android:text="first" android:textColor="@color/Black" android:textSize="20dip" android:gravity="right"/> <RadioButton android:id="@+id/second" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/Black" android:button="@null" android:drawablePadding="30dp" android:drawableRight="@android:drawable/btn_radio" android:text="second" android:textColor="@color/White" android:textSize="20dp" android:gravity="right"/> <RadioButton android:id="@+id/third" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/Maroon" android:button="@null" android:drawablePadding="30dp" android:drawableRight="@android:drawable/btn_radio" android:text="third" android:textColor="@color/Vanilla" android:textSize="20dp" android:gravity="right" /> </RadioGroup>

Quiero poner el texto de un botón de opción a la izquierda y no a la derecha

Encontré esta solución

<RadioGroup android:id="@+id/radios" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_gravity="right" android:inputType="text" android:orientation="vertical" > <RadioButton android:id="@+id/first" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="right" android:background="@color/white" android:button="@null" android:drawablePadding="30dp" android:drawableRight="@android:drawable/btn_radio" android:text="first" android:textColor="@color/Black" android:textSize="20dip" /> <RadioButton android:id="@+id/second" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/Black" android:button="@null" android:drawablePadding="30dp" android:drawableRight="@android:drawable/btn_radio" android:text="second" android:textColor="@color/White" android:textSize="20dp" /> <RadioButton android:id="@+id/third" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/Maroon" android:button="@null" android:drawablePadding="30dp" android:drawableRight="@android:drawable/btn_radio" android:text="third" android:textColor="@color/Vanilla" android:textSize="20dp" /> </RadioGroup>

pero el problema es que la gravedad del texto estará a la izquierda, lo que quiero es corregirlo porque estoy escribiendo palabras en árabe


Basándome en la respuesta de , sugiero la siguiente solución que utiliza el efecto de ondulación del material y produce el siguiente resultado:

Si desea los divisores como se muestra en el GIF, simplemente agregue una vista con la altura de 1 y un color de fondo entre los botones de radio.

<RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:checkedButton="@+id/radioButton1"> <RadioButton android:id="@+id/radioButton1" android:layout_width="match_parent" android:layout_height="wrap_content" android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorSingle" android:background="?android:selectableItemBackground" android:layoutDirection="rtl" android:layout_gravity="start" android:textAlignment="textStart" android:paddingBottom="10dp" android:paddingLeft="20dp" android:paddingRight="20dp" android:paddingTop="10dp" android:text="Button1" android:textSize="14sp" /> <RadioButton android:id="@+id/radioButton2" android:layout_width="match_parent" android:layout_height="wrap_content" android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorSingle" android:background="?android:selectableItemBackground" android:layoutDirection="rtl" android:layout_gravity="start" android:textAlignment="textStart" android:paddingBottom="10dp" android:paddingLeft="20dp" android:paddingRight="20dp" android:paddingTop="10dp" android:text="Button2" android:textSize="14sp" /> <RadioButton android:id="@+id/radioButton3" android:layout_width="match_parent" android:layout_height="wrap_content" android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorSingle" android:background="?android:selectableItemBackground" android:layoutDirection="rtl" android:layout_gravity="start" android:textAlignment="textStart" android:paddingBottom="10dp" android:paddingLeft="20dp" android:paddingRight="20dp" android:paddingTop="10dp" android:text="Button3" android:textSize="14sp" /> </RadioGroup>


Eche un vistazo al ejemplo "CustomChoiceList" , donde se explica cómo puede crear sus propias casillas de verificación / botones de radio o cómo puede crear un ListView con las casillas de verificación / botones de radio predeterminados utilizados en la configuración de Android, por ejemplo. Especialmente, debe tener en cuenta que el archivo res / layout / sample_main.xml, es muy extenso.


En caso de que alguien todavía se esté preguntando cómo lograr esto, aquí hay una mejor solución en mi opinión: la clase LineareLayout extiende LineareLayout . Puedes agregar un simple botón de radio y un TextView al lado y fácilmente tener el mismo efecto:

<RadioGroup android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="خانم"/> <RadioButton android:id="@+id/female" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="20dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="آقا"/> <RadioButton android:id="@+id/male" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RadioGroup>

Que luego hace un diseño como el siguiente:


Existe una propiedad llamada android:drawableRight que establecerá el lado derecho de su texto que se puede android:button y establecerá el android:button null . Verifique abajo el código:

Nota: Esta es una muestra, puede aplicar a todos sus botones de radio.

<RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:button="@null" android:drawableRight="@android:drawable/btn_radio" android:text="Left"/>


He utilizado un truco como el siguiente código para lograrlo en todos los SDK con IU predeterminada y comportamiento de selección predeterminado:

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layoutDirection="ltr" android:orientation="vertical" android:padding="10dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginRight="30dp" android:paddingLeft="15dp" android:paddingRight="15dp" android:text="RadioButton 1" android:textColor="@color/Black" /> <RadioButton android:id="@+id/rb1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:paddingBottom="10dp" android:paddingTop="10dp" android:scaleX="-1" /> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginRight="30dp" android:paddingLeft="15dp" android:paddingRight="15dp" android:text="RadioButton 2" android:textColor="@color/Black" /> <RadioButton android:id="@+id/rb2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:paddingBottom="10dp" android:paddingTop="10dp" android:scaleX="-1" /> </RelativeLayout> </LinearLayout>

Ahora para hacer que los botones sean únicos seleccionables, simplemente escriba el código para los botones en el oyente onCheckedChanged y haga que otros botones no onCheckedChanged .

Me gusta esto:

rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { if(checked) rb2.setChecked(false); } });


Intente agregar los siguientes atributos en el RadioButton , debería funcionar, de esta manera aún podrá mantener el efecto de onda en el botón de radio:

android:layoutDirection="rtl" android:textAlignment="textStart" android:layout_gravity="start"

Recuerde establecer la propiedad supportRtl en true en su manifiesto de aplicación.

por ejemplo:

<RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:layoutDirection="rtl" android:textAlignment="textStart" android:layout_gravity="start" android:text="The test item a" android:textSize="14sp" /> .... </RadioGroup>

daría a conocer


Prueba este código y cambia los valores a tus palabras árabes.

main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <RadioGroup android:id="@+id/radioGender" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radioMale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_male" android:checked="true" /> <RadioButton android:id="@+id/radioFemale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_female" /> </RadioGroup> <Button android:id="@+id/btnDisplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_display" /> </LinearLayout>


Solo agrega:

android:button="@null" android:drawableRight="@android:drawable/btn_radio"


agrega esto en xml: (4.2 y superior)

android:layoutDirection="rtl"

para versiones anteriores a 4.2 use ViewCompat desde android.support.v4.view:

ViewCompat.setLayoutDirection(findViewById(R.id.radio_button), ViewCompat.LAYOUT_DIRECTION_RTL);


prueba este código:

<RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="right"> <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:textDirection="rtl" android:layout_margin="4dp" android:layoutDirection="rtl" android:textAlignment="textStart" android:layout_gravity="start" android:text="اول" android:textSize="15dp"/> </RadioGroup>

resultado: mostrar resultado


android:layout_width="wrap_content" android:layout_height="wrap_content" fontPath="@string/font_nunito_light" android:text="Male" android:layout_marginTop="@dimen/dp_10" android:drawablePadding="@dimen/dp_10" android:drawableStart="@drawable/selector_radio" android:button="@null" android:id="@+id/rb_" android:checked="true" android:textSize="@dimen/sp_15"