我想要“标签”, - 您在RadioButton
中设置的文字显示按钮的左侧,并在其间有一些填充。
在布局中添加额外的TextView
不起作用,因为我RadioGroup
无效(我可以选择多个按钮),如果我将RadioButton
之外的任何内容添加到RadioGroup
中{1}}。
那么,如何将RadioButton更改为<text><buttondrawable>
而不是<buttondrawable><text>
答案 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中找到一个名为getHorizontalOffsetForDrawables的新方法。计算单选按钮的左边距时会调用此方法(因此图中所示的附加空间)。
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>
答案 3 :(得分:-1)
您还可以从右到左更改布局方向,并对齐文本以开始
android:layoutDirection="rtl"
android:textAlignment="textStart"