在Android上留下边距的单选按钮的文本左侧

时间:2012-09-24 15:15:38

标签: android layout textview radio-button

我想要“标签”, - 您在RadioButton中设置的文字显示按钮的左侧,并在其间有一些填充。

在布局中添加额外的TextView不起作用,因为我RadioGroup无效(我可以选择多个按钮),如果我将RadioButton之外的任何内容添加到RadioGroup中{1}}。

那么,如何将RadioButton更改为<text><buttondrawable>而不是<buttondrawable><text>

4 个答案:

答案 0 :(得分:36)

您可以通过设置android:button="@null"并将RadioButton的drawable添加为android:drawableRight来实现此目的。您可以使用android:drawablePadding更改文本和drawable之间的填充。

    <RadioGroup
        android:id="@+id/radios"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:inputType="text"
        android:orientation="vertical" >

        <RadioButton
            android:id="@+id/first"
            android:button="@null"
            android:drawableRight="@android:drawable/btn_radio"
            android:drawablePadding="20dp"
            android:layout_width="200dip"
            android:layout_height="wrap_content"
            android:text="@string/first"
            android:textSize="20dip" />

        <RadioButton
            android:id="@+id/second"
            android:button="@null"
            android:drawableRight="@android:drawable/btn_radio"
            android:drawablePadding="20dp"
            android:layout_width="200dip"
            android:layout_height="wrap_content"
            android:text="@string/second"
            android:textSize="20dip" />
    </RadioGroup>
</RelativeLayout>

答案 1 :(得分:1)

上面的答案使图像没有选择状态。

这可以帮到你:

  • 在API&lt; = 16上,您可以在单选按钮上设置填充,以设置相对于单选按钮视图边界的填充。此外,补丁九背景也会改变相对于视图的视图边界。

  • 在API 17上,左侧填充与可绘制的单选按钮相关。同样适用于九个补丁。为了更好地说明填充差异,请参阅随附的屏幕截图。

如果你仔细研究代码,你会在api 17中找到一个名为getHorizo​​ntalOffsetForDrawables的新方法。计算单选按钮的左边距时会调用此方法(因此图中所示的附加空间)。

TL; DR您应该为您支持的min sdk设置单选按钮样式,并为api 17 +

设置另一种样式

答案来自this same question @James Baca回答

答案 2 :(得分:0)

step1-创建可绘制的 radio_button_insert。

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"   android:drawable="@drawable/ic_baseline_check_circle_24"
    android:insetRight="@dimen/dp10">
</inset>

step2-创建可绘制的 custom_radio_button。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:enterFadeDuration="@android:integer/config_shortAnimTime" android:exitFadeDuration="@android:integer/config_shortAnimTime">
    <item android:drawable="@drawable/radio_button_inset" android:state_checked="true" />
    <item android:drawable="@color/transparent" android:state_checked="false" />
</selector>

step3-为背景创建drawable。

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:enterFadeDuration="@android:integer/config_shortAnimTime" android:exitFadeDuration="@android:integer/config_shortAnimTime">
    <item android:drawable="@drawable/bg_roundcorner_blue_border" android:state_checked="true"/>
    <item android:drawable="@drawable/bg_roundcorner_gray_border" android:state_checked="false" />
</selector>

第 4 步 - 在单选按钮布局中使用。

 <RadioGroup
                android:id="@+id/rg_options"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layoutDirection="rtl"
                app:layout_constraintEnd_toEndOf="parent"
                android:orientation="vertical"
                android:layout_margin="@dimen/dp10"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/title">
                <androidx.appcompat.widget.AppCompatRadioButton
                    android:layout_width="match_parent"
                    android:text="@string/lbl_store"
                    android:padding="@dimen/dp10"
                    android:button="@drawable/custom_radio_button"
                    android:background="@drawable/custom_radio_background"
                    android:layout_height="wrap_content"/>
                <androidx.appcompat.widget.AppCompatRadioButton
                    android:layout_width="match_parent"
                    android:padding="@dimen/dp10"
                    android:layout_marginTop="@dimen/dp25"
                    android:background="@drawable/custom_radio_background"
                    android:button="@drawable/custom_radio_button"
                    android:text="@string/lbl_your_manufacturers"
                    android:layout_height="wrap_content"/>
            </RadioGroup>

输出:Radio button and background shape

答案 3 :(得分:-1)

您还可以从右到左更改布局方向,并对齐文本以开始

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