web-dev-qa-db-fra.com

comment mettre le texte à gauche d'un bouton radio sous Android

Je veux mettre le texte d'un bouton radio à gauche et non à droite

J'ai trouvé cette solution

        <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>

mais le problème est que la gravité du texte sera à gauche, ce que je veux, c'est le corriger car j'écris des mots arabes

enter image description here

44
BasILyoS

Ajoutez Android:gravity="right" dans chaque RadioButton comme suit.

  <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>
57
Mukesh Kumar Singh

Essayez d’ajouter les attributs suivants à la variable RadioButton. Cela devrait fonctionner. Ainsi, vous conserverez toujours l’effet d’ondulation sur le bouton radio:

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

N'oubliez pas de définir la propriété supportsRtl sur true dans votre manifeste d'application.

pour par exemple:

           <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>

donnerait:

 enter image description here

84
Irshu

Il existe une propriété appelée Android:drawableRight qui définira votre tirable du côté droit de votre texte et définira Android:button en tant que null. vérifier ci-dessous morceau de code:

Remarque: Ceci est un exemple, vous pouvez appliquer à votre tous les bouton radio.

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

Il suffit d'ajouter:

Android:button="@null"
Android:drawableRight="@Android:drawable/btn_radio"
10
Seyyed

Sur la base de la réponse de Irshu je suggère la solution suivante qui utilise l’effet d’ondulation des matières et produit le résultat suivant:

 Demo

Si vous souhaitez que les séparateurs comme indiqué dans le GIF, ajoutez simplement une vue avec la hauteur 1 et une couleur d'arrière-plan entre les boutons 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>
10
Max

ajoutez ceci en xml: (4.2 et plus)

Android:layoutDirection="rtl"

pour les versions plus anciennes que la version 4.2, utilisez ViewCompat à partir de Android.support.v4.view:

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

Très simple, vous voulez que le texte apparaisse à gauche du bouton radio, il vous suffit de changer le sens de la mise en page en rtl (== de droite à gauche):

Android:layoutDirection="rtl"
4
medmahmoudkedda

J'ai utilisé une astuce comme le code ci-dessous pour y parvenir dans tous les kits de développement logiciel (SDK) avec interface utilisateur par défaut et comportement de sélection par défaut:

<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>

Maintenant, pour que les boutons soient sélectionnables une seule fois, écrivez simplement le code des boutons onCheckedChanged écouteur et désactivez les autres boutons.

Comme ça:

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

essayez ce code:

                     <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>

résultat: affiche le résultat

2

Jetez un coup d'œil à l'exemple "CustomChoiceList" , on explique comment créer ses propres cases à cocher/boutons radio ou comment créer un ListView avec les cases à cocher/boutons radio utilisés par défaut dans les paramètres Android. , par exemple. Vous devriez en particulier noter le fichier res/layout/sample_main.xml, il a beaucoup à dire.

1
Daniel Höh
            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"
1
Dishant Kawatra

essayez ce code et changez les valeurs en mots arabes.

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>
1
user2790339

Ne soyez pas confus de voir des lignes de codes, c'est juste une simple ligne

Android:layoutDirection="rtl";//right to left,if you want you can set ltr

mettre ceci comme

        <RadioButton
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layoutDirection="rtl"
        Android:text="English"
        Android:textSize="24dp"
        />

et veillez à actualiser votre aperçu afin de sélectionner Design et non bleu print

1
Saddan

garder le style matériel utiliser Android: drawableRight = "? android: attr/listChoiceIndicatorSingle"

<RadioButton
   Android:id="@+id/radioButton"
   Android:layout_width="wrap_content"
   Android:layout_height="wrap_content"
   Android:button="@null"
   Android:text="rtl button"
   Android:drawableRight="?android:attr/listChoiceIndicatorSingle"/>
0