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

Bas*_*yoS 53 android radio

我想把左边的单选按钮的文字放在右边

我找到了这个解决方案

        <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>
Run Code Online (Sandbox Code Playgroud)

但问题是,文本引力将在左边,我想要的是把它放到正确,因为我正在写阿拉伯语单词

在此输入图像描述

Irs*_*shu 110

尝试添加以下属性RadioButton,它应该工作,这样你仍然可以保持单选按钮上的涟漪效果:

android:layoutDirection="rtl"
android:textAlignment="textStart"
android:layout_gravity="start"
Run Code Online (Sandbox Code Playgroud)

请记住在应用程序清单中将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>
Run Code Online (Sandbox Code Playgroud)

会给出:

在此输入图像描述

  • 我不确定这是否曾经有效,似乎是这样,但对我而言,它不会在屏幕截图中产生结果 - 甚至没有关闭 (2认同)

Muk*_*ngh 60

按以下方式添加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>
Run Code Online (Sandbox Code Playgroud)

  • 虽然解决方案有效,但第一句话具有误导性.单选按钮移动到文本的右侧,而不是左侧,因为`android:button ="@ null"`和`android:drawableRight ="@ android:drawable/btn_radio"`.`android:gravity ="right"`的作用是将小部件与其父级的右侧对齐,而不仅仅是按钮. (10认同)

Max*_*Max 21

基于Irshu的答案,我建议使用以下解决方案,它使用材料涟漪效应并产生以下结果:

演示

如果您想要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>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!这有效。但 android:layoutDirection="rtl" 不是必需的。 (2认同)

Rob*_*ood 19

有一个属性被称为android:drawableRight将你的文本的可绘制右侧设置android:buttonnull.检查下面的代码:

注意:这是示例,您可以申请所有radioButton.

 <RadioButton 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:button="@null"
             android:drawableRight="@android:drawable/btn_radio"
             android:text="Left"/>
Run Code Online (Sandbox Code Playgroud)


Sey*_*yed 11

只需添加:

android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
Run Code Online (Sandbox Code Playgroud)


mas*_*ani 8

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

android:layoutDirection="rtl"
Run Code Online (Sandbox Code Playgroud)

对于早于4.2的版本,请使用android.support.v4.view中的ViewCompat:

ViewCompat.setLayoutDirection(findViewById(R.id.radio_button), ViewCompat.LAYOUT_DIRECTION_RTL);
Run Code Online (Sandbox Code Playgroud)


小智 8

尝试将以下属性添加到 RadioButtons 中,它可以工作

<RadioGroup
    android:id="@+id/radioGroup_sample"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layoutDirection="rtl"
    android:orientation="horizontal"
    android:weightSum="2">

    <RadioButton
        android:id="@+id/radio_sample_one"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="right|center_vertical"
        android:layoutDirection="rtl"
        android:text="?????? ?? ?? ?????"
        android:button="@null"
        android:drawableRight="?android:attr/listChoiceIndicatorSingle"/>
    <RadioButton
        android:id="@+id/radio_sample_tow"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="right|center_vertical"
        android:layoutDirection="rtl"
        android:text="?????? ?? ?? ?????"
        android:button="@null"
        android:drawableRight="?android:attr/listChoiceIndicatorSingle"/>

</RadioGroup>
Run Code Online (Sandbox Code Playgroud)

我的示例代码的这张图片

在此处输入图片说明


Roh*_*ani 6

<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"
/>
Run Code Online (Sandbox Code Playgroud)

现在 Rtl 会将您的文本移至右侧,


小智 5

很简单,你想让文本出现在单选按钮的左边,你只需要把布局方向改为rtl(==从右到左):

android:layoutDirection="rtl"
Run Code Online (Sandbox Code Playgroud)