Android 如何在API 16中为RadioButton设置透明背景?
我有一个单选按钮,它有一个自定义的背景,用于不同的状态。要使用此背景,我将Android 如何在API 16中为RadioButton设置透明背景?,android,radio-button,Android,Radio Button,我有一个单选按钮,它有一个自定义的背景,用于不同的状态。要使用此背景,我将android:button属性设置为transparent。API 16似乎还不支持这一点,背景看起来只有黑色 如何实现API 17及以上版本中的相同效果 单选按钮背景.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android
android:button
属性设置为transparent
。API 16似乎还不支持这一点,背景看起来只有黑色
如何实现API 17及以上版本中的相同效果
单选按钮背景.xml
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape android:shape="rectangle">
<corners android:radius="3dp"/>
<stroke android:width="1dp" android:color="@color/grey"/>
<solid android:color="@color/grey"/>
</shape>
</item>
<item android:state_checked="true">
<shape android:shape="rectangle">
<corners android:radius="3dp"/>
<stroke android:width="1dp" android:color="@color/grey"/>
<solid android:color="@color/grey"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<corners android:radius="3dp"/>
<stroke android:width="1dp" android:color="@color/grey"/>
</shape>
</item>
</selector>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="8dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Your choice"
android:textSize="12sp"/>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="8dp"
android:padding="8dp"
android:button="@android:color/transparent"
android:background="@drawable/radio_button_background"
android:gravity="center"
android:checked="true"
android:text="Easy"/>
<androidx.appcompat.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="8dp"
android:padding="8dp"
android:button="@android:color/transparent"
android:background="@drawable/radio_button_background"
android:gravity="center"
android:text="Middle"/>
<androidx.appcompat.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="8dp"
android:padding="8dp"
android:button="@android:color/transparent"
android:background="@drawable/radio_button_background"
android:gravity="center"
android:text="Hard"/>
</RadioGroup>
</LinearLayout>
屏幕截图API 17
在可绘制背景中将
设置为第三个
的形状,并从AppCompatRadioButton
s中删除android:button
属性。我建议使用您的自定义颜色,因为实践表明,不同设备的android颜色可能不同。将
设置为可绘制背景中第三个
的形状,并从AppCompatRadioButton
中删除android:button
属性。我建议您使用自定义颜色,因为实践表明,不同设备的android颜色可能不同。尝试在可绘制背景中将
设置为第三个
的形状,并删除android:button
属性。我建议您使用自定义颜色,因为实践表明,不同设备的android颜色可能不同。这很有效,谢谢!虽然有一个副作用,当我点击一个单选按钮时,它的背景会变成灰色,但再也不会离开这个状态。有什么提示吗?@JeneaVranceanu你可以发表你的评论作为答案。它解决了我的问题。我产生的副作用是因为我没有在RadioButton上添加android:id
属性。添加id解决了这个问题。很高兴它起作用了!答案贴出来了。谢谢。请尝试在可绘制背景中将
设置为第三个
的形状,并删除android:button
属性。我建议您使用自定义颜色,因为实践表明,不同设备的android颜色可能不同。这很有效,谢谢!虽然有一个副作用,当我点击一个单选按钮时,它的背景会变成灰色,但再也不会离开这个状态。有什么提示吗?@JeneaVranceanu你可以发表你的评论作为答案。它解决了我的问题。我产生的副作用是因为我没有在RadioButton上添加android:id
属性。添加id解决了这个问题。很高兴它起作用了!答案贴出来了。谢谢。好的,我有最新消息。选择器文件中的shape
项实际上会膨胀为shapedravable
,它扩展了dravable
。我假设在API 16中,Drawable
设置了不同的默认背景颜色(即XML中的纯色
颜色)。不过,我无法通过检查Android源代码来证明这一点。我也没有删除单选按钮的android:button
属性。因为这删除了实际的单选按钮圆圈,这也是我想要的。啊,我还使用了
而不是
好的,我有一个更新。选择器文件中的shape
项实际上会膨胀为shapedravable
,它扩展了dravable
。我假设在API 16中,Drawable设置了不同的默认背景颜色(即XML中的纯色
颜色)。不过,我无法通过检查Android源代码来证明这一点。我也没有删除单选按钮的android:button
属性。因为这删除了实际的单选按钮圆圈,这也是我想要的。啊,我也使用
而不是