RadioButton'android:button'什么都不做

时间:2017-10-12 13:40:18

标签: android radio-button android-drawable

我试图更改RadioButton上已选中按钮的drawable,但没有显示任何内容;设置drawable只会删除已存在的默认值。

我使用堆栈溢出来尝试找到解决方案但是当我尝试实现它时,没有可绘制的显示。我的选择器似乎很好,因为当我设置显示我圈子的单选按钮的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>

使用我的选择器

with selector

没有我的选择器

without selector

我的选择器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>

2 个答案:

答案 0 :(得分:2)

我认为你看不到任何东西,因为你的抽屉没有任何尺寸。

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

答案 1 :(得分:1)

您的问题

如您所见,RadioButton扩展了CompoundButton。当你不使用你的选择器时,有一个默认的drawable.Let&#39s看到它的构造函数。

   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);
    }

默认的drawable是R.styleable.CompoundButton_button,我的设备上有intrinsicWidth = 96pxintrinsicHeight = 96px

当您使用选择器时,drawable&#39; intrinsicWidth = -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>