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 = 96px
和 intrinsicHeight = 96px
在我的设备上。
当你使用你的选择器时,drawable
的intrinsicWidth = -1px
和intrinsicHeight = -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>
我试图更改 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 = 96px
和 intrinsicHeight = 96px
在我的设备上。
当你使用你的选择器时,drawable
的intrinsicWidth = -1px
和intrinsicHeight = -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>