Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在API 16中为RadioButton设置透明背景?_Android_Radio Button - Fatal编程技术网

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
属性。因为这删除了实际的单选按钮圆圈,这也是我想要的。啊,我也使用
而不是