Как поместить текст слева от переключателя в андроиде
Я хочу поместить текст переключателя слева не справа
Я нашел это решение
<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]()
Ответы
Ответ 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 будет перемещать ваш текст вправо,