如何将文本放在android中单选button的左侧

我想把单选button的文字放在左边,而不是在右边

我发现这个解决scheme

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

但问题是,文本的重力将在左边,我想要的是正确的,因为我正在写阿拉伯语的话

在这里输入图像说明

Solutions Collecting From Web of "如何将文本放在android中单选button的左侧"

在每个RadioButton添加android:gravity="right" ,如下所示。

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

尝试添加下列属性到RadioButton ,它应该可以工作,这样你仍然可以保持对单选button的连锁效果:

  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> 

会发出:

在这里输入图像说明

有一个名为android:drawableRight属性,它将设置您的文本的可绘制右侧,并将android:button设置为null 。 检查下面的一段代码:

注意:这是样本,你可以应用到你的所有radioButton。

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

只需添加:

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

如果有人仍然想知道如何实现这个,我认为这是一个更好的解决scheme: RadioGroup类扩展LineareLayout 。 你可以在它旁边添加一个简单的单选button和一个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> 

然后,如下所示的布局:

在这里输入图像说明

我已经使用了如下代码的技巧,在所有使用默认UI和默认select行为的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> 

现在为了使button可单独select,只需写入onCheckedChanged监听器button的代码,并取消选中其他button。

喜欢这个:

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

在xml中添加:(4.2及以上)

 android:layoutDirection="rtl" 

对于比4.2更旧的版本使用android.support.v4.view的ViewCompat:

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

试试这个代码,并将值更改为阿拉伯文字

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> 

看一下“CustomChoiceList”的例子 ,在那里解释了如何创build自己的checkbox/单选button或者如何创build一个ListView,例如Android设置中使用的默认checkbox/单选button。 你应该特别注意res / layout / sample_main.xml文件,它扩展了很多。