RadioButton 'android:button' 什么都不做

RadioButton 'android:button' does nothing

我试图更改 RadioButton 上选中按钮的可绘制对象,但没有任何显示;设置可绘制对象只会删除已经存在的默认对象。

我使用堆栈溢出来尝试找到解决方案,但是当我尝试实现它时,没有显示可绘制对象。我的选择器似乎没问题,因为当我设置显示我的圈子的单选按钮的 background 时。

我确定这是一个非常明显的问题,我会因为没有看到而自责;谁能找出问题所在?

我的单选按钮

    <RadioGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Left"
            android:checked="false"
            android:button="@drawable/radio_button" />
        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:button="@drawable/radio_button"
            android:text="Right"
            android:checked="true" />
    </RadioGroup>

用我的选择器

没有我的选择器

我的选择器XML

<?xml version="1.0" encoding="UTF-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/radio_button_checked"
        android:state_checked="true" />
    <item
        android:drawable="@drawable/radio_button_unchecked" />
</selector>

radio_button_checked.xml

<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="@color/primary_button_color"/>
    <stroke
        android:width="2px"
        android:color="#000000"/>
</shape>

radio_button_unchecked.xml

<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke
        android:width="2px"
        android:color="#000000"/>
</shape>

我认为您看不到任何东西,因为您的可绘制对象没有任何大小。

尝试在您的 xml 形状下定义 <size android:width="60dp" android:height="60dp"/>

你的问题

如您所见,RadioButton 扩展了 CompoundButton。当你不使用你的选择器时,有一个默认的drawable.Let's see its constructor.

   public CompoundButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);

    final TypedArray a = context.obtainStyledAttributes(
            attrs, com.android.internal.R.styleable.CompoundButton, defStyleAttr, defStyleRes);

    final Drawable d = a.getDrawable(com.android.internal.R.styleable.CompoundButton_button);
    if (d != null) {
        setButtonDrawable(d);
    }

默认的可绘制对象是 R.styleable.CompoundButton_button,其 intrinsicWidth = 96pxintrinsicHeight = 96px 在我的设备上。

当你使用你的选择器时,drawableintrinsicWidth = -1pxintrinsicHeight = -1px所以你看不到它。

解决方案

您应该定义可绘制对象的大小。

 <?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="oval">
<size android:width="24dp" android:height="24dp"/>
<stroke
    android:width="2px"
    android:color="#000000"/>
</shape>