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

时间:2013-09-20 10:43:12

标签: 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>

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

enter image description here

19 个答案:

答案 0 :(得分:89)

尝试将以下属性添加到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>

会给出:

enter image description here

答案 1 :(得分:57)

在每个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 :(得分:19)

有一个名为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"/>

答案 3 :(得分:17)

基于Irshu的答案,我建议采用材料波纹效应并产生以下结果的以下解决方案:

Demo

如果要使分隔线如GIF所示,则只需在单选按钮之间添加一个高度为1且背景为背景的视图即可。

browser.params.runtime

答案 4 :(得分:11)

添加:

if(date.before(date1));

答案 5 :(得分:7)

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

android:layoutDirection="rtl"

对于旧版本而不是4.2使用来自android.support.v4.view的ViewCompat:

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

答案 6 :(得分:4)

非常简单,您希望文本显示在单选按钮的左侧,只需将布局方向更改为rtl(==从右到左):

android:layoutDirection="rtl"

答案 7 :(得分:3)

如果有人仍然想知道如何实现这一点,我认为这是一个更好的解决方案: RadioGroup课程延伸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>

然后制作如下布局:

enter image description here

答案 8 :(得分:3)

不要混淆看代码行,它只是简单的一行

$pdf = new PDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
                    // set document information
                    $pdf->SetCreator(PDF_CREATOR);
                    // set default header data
                    $pdf->setPrintHeader(false);
                    $pdf->setPrintFooter(false);
                    //====================================================================================================+   
                    // set default font subsetting mode
                    $pdf->setFontSubsetting(true);

                    // Set font
                    // dejavusans is a UTF-8 Unicode font, if you only need to
                    // print standard ASCII chars, you can use core fonts like
                    // helvetica or times to reduce file size.
                    //$fontname = TCPDF_FONTS::addTTFfont('/tcpdf/fonts/DejaVuSans.ttf', 'TrueTypeUnicode', '', 96);
                    //$pdf->SetFont($fontname, '', 14, '', false);
                    //$pdf->SetFont('DejaVuSans', '', 14, '', true);
                    //$fontname = TCPDF_FONTS::addTTFfont('../tcpdf/fonts/ARIALUNI.ttf', 'TrueTypeUnicode', '', 32);
                    $pdf->SetFont('dejavuserifcondensed', '', 14);

                    /*$font = $this->addTTFfont("DejaVuSans.ttf");
                    $pdf->SetFont($font, '', 14, '', false);*/
                    // Add a page
                    // This method has several options, check the source code documentation for more information.
                    $pdf->AddPage();
                    // set auto page breaks
                    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
                    //====================================================================================================+
                    $html = utf8_encode($html);
                    //====================================================================================================+
                    // Print text using writeHTMLCell()
                    //$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
                    $pdf->writeHTML($html, true, false, true, false, '');
                    //====================================================================================================+
                    // Close and output PDF document
                    // This method has several options, check the source code documentation for more information.
                    //$name = ROOT_DIR . '/files/'.$username.'/bulletin.pdf';
                    $pdf->Output(ROOT_DIR . '/assets/uploads/lightning_bulletin/lightning_bulletin_'.date('Y-m-d-H-i-s').'.pdf', 'F');
                    // $pdf->Output('bulletin.pdf', 'I');
                    //====================================================================================================+
                    // END OF FILE
                    //====================================================================================================+  
                    // $this->view(ROOT_DIR . '/assets/uploads/mail_uploads/bulletin_'.$date_str.'.pdf');
                    echo json_encode(array('url'=>base_url() . '/assets/uploads/lightning_bulletin/lightning_bulletin_'.date('Y-m-d-H-i-s').'.pdf'));

喜欢这样

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

并谨慎地刷新预览以更好地选择“设计不是蓝图”

答案 9 :(得分:2)

我已经使用了类似下面代码的技巧来实现所有SDK中的默认UI和默认选择行为:

<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);
    }
});

答案 10 :(得分:2)

试试这段代码:

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

结果: show result

答案 11 :(得分:1)

尝试将以下属性添加到R​​adioButtons中,

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

我的示例代码的图片

enter image description here

答案 12 :(得分:1)

尝试此代码并将值更改为您的阿拉伯语单词..

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 :(得分:1)

要保持材料样式,请使用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"/>

答案 14 :(得分:1)

            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 :(得分:1)

看看"CustomChoiceList" example,在那里解释了如何创建自己的复选框/单选按钮或如何使用android设置中使用的默认复选框/单选按钮创建ListView , 例如。你应该特别注意res / layout / sample_main.xml文件,它会得到很多。

答案 16 :(得分:0)

由于没有人提到这一点,因此下面是您可以通过编程方式在有人尝试的情况下进行操作的方法

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

答案 17 :(得分:0)

您可以在RadioButtons中更改RadioGroup的方向 在您的RadioGroup属性中添加android:layoutDirection="rtl"

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

答案 18 :(得分:0)

                            <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会将您的文本向右移动,