Подтвердить что ты не робот

Как поместить текст слева от переключателя в андроиде

Я хочу поместить текст переключателя слева не справа

Я нашел это решение

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

но проблема в том, что гравитация текста будет слева, что я хочу, чтобы это было правильно, потому что я пишу арабские слова

enter image description here

4b9b3361

Ответ 1

Добавьте android:gravity="right" в каждый RadioButton, как показано ниже.

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

Ответ 2

Попробуйте добавить в RadioButton следующие атрибуты: он должен работать, таким образом, вы все равно можете сохранить эффект пульсации на переключателе:

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

Не забудьте установить для свойства supportsRtl значение true в манифесте приложения.

например:

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

выдаст:

введите описание изображения здесь

Ответ 3

Существует свойство, называемое android:drawableRight, которое установит вашу правую сторону вашего текста и установит android:button как null. проверьте ниже фрагмент кода:

Примечание. Это образец, который вы можете применить к своему радиобату.

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

Ответ 4

Основываясь на ответе Иршу, я предлагаю следующее решение, которое использует волновой эффект материала и дает следующий результат:

Demo

Если вы хотите разделители, как показано в GIF, то просто добавьте вид с высотой 1 и цвет фона между радиокнопками.

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

Ответ 5

Просто добавьте:

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

Ответ 6

добавьте это в xml: (4.2 и выше)

android:layoutDirection="rtl"

для более старой версии, чем 4.2, используйте ViewCompat из android.support.v4.view:

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

Ответ 7

Очень просто, вы хотите, чтобы текст отображался слева от переключателя, вам просто нужно изменить направление макета на rtl (== справа налево):

android:layoutDirection="rtl"

Ответ 8

В случае, если кому-то все еще интересно, как этого добиться, здесь лучшее решение, на мой взгляд: RadioGroup class extends LineareLayout. Вы можете добавить простой переключатель и TextView рядом с ним и получить тот же эффект:

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

Что затем делает макет, как показано ниже:

введите описание изображения здесь

Ответ 9

Не запутайтесь, чтобы увидеть строки кодов, это просто простая строка

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

поставить это как

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

и тщательно обновите свой предварительный просмотр, чтобы лучше выбрать дизайн, а не синюю печать

Ответ 10

Я использовал трюк, подобный приведенному ниже коду, для достижения этого во всех SDK с пользовательским интерфейсом по умолчанию и по умолчанию:

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

Теперь, чтобы сделать кнопки одноразовыми, просто напишите код для кнопок onCheckedChanged прослушиватель и сделайте другие кнопки непроверенными.

Вот так:

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

Ответ 11

попробуйте этот код:

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

результат: показать результат

Ответ 12

попробуйте этот код и измените значения на ваши арабские слова..

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>

Ответ 13

Взгляните на "CustomChoiceList" пример, там объясняется, как вы можете создавать свои собственные флажки/переключатели или как вы можете создать ListView с установленными по умолчанию галочками/переключателями, используемыми в настройках Android. Особенно следует обратить внимание на файл res/layout/sample_main.xml, он значительно отличается.

Ответ 14

            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"

Ответ 15

чтобы сохранить стиль материала, используйте 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"/>

Ответ 16

Вы можете изменить направление для своих RadioButtons в RadioGroup добавив android:layoutDirection="rtl" в свой атрибут RadioGroup.

<RadioGroup
    android:id="@+id/role_radioGroup_ID"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layoutDirection="rtl">
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/manager" />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="@string/fleetVehicle" />

   <RadioButton
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/personalVehicle" />
</RadioGroup>

Ответ 17

Поскольку никто не упомянул об этом, ниже представлен способ, которым вы можете сделать это программно, если кто-то пытается это сделать

RadioButton button = new RadioButton(context);
ViewCompat.setLayoutDirection(button, ViewCompat.LAYOUT_DIRECTION_RTL);

// Create the layout params for our buttons
RadioGroup.LayoutParams layoutParams = new 
RadioGroup.LayoutParams(LayoutParams.MATCH_PARENT, 
LayoutParams.WRAP_CONTENT);
button.setLayoutParams(layoutParams);
layoutParams.gravity = Gravity.RIGHT;
button.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_START);
button.setGravity(Gravity.CENTER);

Ответ 18

                            <RadioButton
                                android:id="@+id/myRb"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:textAlignment="gravity"
                                android:gravity="left|center_vertical"
                                android:layoutDirection="rtl"
                                android:layout_gravity="start"
                            />

Теперь Rtl будет перемещать ваш текст вправо,