11

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

在布局中添加一个附加项TextView不起作用,因为RadioGroup如果我将除 a 之外的任何其他内容添加RadioButtonRadioGroup.

那么,我怎样才能将 RadioButton 更改<text><buttondrawable><buttondrawable><text>

4

4 回答 4

39

您可以通过设置和添加asandroid:button="@null"的 drawable来实现这一点。您可以使用 更改文本和可绘制对象之间的填充。RadioButtonandroid:drawableRightandroid:drawablePadding

    <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>
于 2012-09-24T15:27:17.300 回答
0

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

愿这对您有所帮助:

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

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

如果您深入研究代码,您会在 api 17 中找到一个名为 getHorizo​​ntalOffsetForDrawables 的新方法。在计算单选按钮的左侧填充时调用此方法(因此图片中显示了额外的空间)。

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

答案来自@James Baca 回答的同一个问题

于 2014-05-19T07:13:35.160 回答
0

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

android:layoutDirection="rtl"
android:textAlignment="textStart"
于 2019-03-04T21:12:53.593 回答
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>

输出:单选按钮和背景形状

于 2021-02-17T11:48:09.523 回答