是否可以更改Android单选按钮组中的单选按钮图标

时间:2010-08-26 15:11:02

标签: android radio-button

我想让我的Android应用程序的用户能够设置一些参数。单选按钮非常适合这种情况。但是,我不喜欢单选按钮被渲染。

是否可以更改单选按钮图标?例如,是否可以为每一行创建自定义布局,并在该布局中引用我自己的图标并更改字体等。

6 个答案:

答案 0 :(得分:163)

是的,您可能需要在res / values / styles.xml中为单选按钮定义自己的样式:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme" parent="android:Theme">
   <item name="android:radioButtonStyle">@style/RadioButton</item>
</style>
<style name="RadioButton" parent="@android:style/Widget.CompoundButton.RadioButton">
   <item name="android:button">@drawable/radio</item>
</style>
</resources>

'radio'在这里应该是有状态的drawable,radio.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:state_window_focused="false"
        android:drawable="@drawable/radio_hover" />
    <item android:state_checked="false" android:state_window_focused="false"
        android:drawable="@drawable/radio_normal" />
    <item android:state_checked="true" android:state_pressed="true"
        android:drawable="@drawable/radio_active" />
    <item android:state_checked="false" android:state_pressed="true"
        android:drawable="@drawable/radio_active" />
    <item android:state_checked="true" android:state_focused="true"
        android:drawable="@drawable/radio_hover" />
    <item android:state_checked="false" android:state_focused="true"
        android:drawable="@drawable/radio_normal_off" />
    <item android:state_checked="false" android:drawable="@drawable/radio_normal" />
    <item android:state_checked="true" android:drawable="@drawable/radio_hover" />
    </selector>

然后只需将自定义主题应用于整个应用程序或您选择的活动。

有关主题和样式的更多信息,请查看http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/,这是一个很好的指南。

答案 1 :(得分:30)

您可以像普通按钮一样将自定义图像放在radiobutton中。 为此在可绘制文件夹中创建一个XML文件 e.g

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/sub_screens_aus_hl" 
    android:state_pressed="true"/>  
<item android:drawable="@drawable/sub_screens_aus" 
    android:state_checked="true"/>  
<item android:drawable="@drawable/sub_screens_aus" 
    android:state_focused="true" />
<item android:drawable="@drawable/sub_screens_aus_dis" />  
</selector> 

在这里你可以使用3个不同的图像进行无线电按钮

并将此文件用于RadioButton,如:

android:button="@drawable/aus"
android:layout_height="120dp"
android:layout_width="wrap_content" 

答案 2 :(得分:9)

只更改单选按钮的简单方法就是为drawable right

设置选择器
<RadioButton
    ...
    android:button="@null"
    android:checked="false"
    android:drawableRight="@drawable/radio_button_selector" />

选择器是:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_checkbox_checked" android:state_checked="true" />
    <item android:drawable="@drawable/ic_checkbox_unchecked" android:state_checked="false" /></selector>

全部

答案 3 :(得分:1)

是....` 来自Xml

android:button="@drawable/yourdrawable" 

和Java

myRadioButton.setButtonDrawable(resourceId or Drawable);

`

答案 4 :(得分:0)

这可能是一种快速的方法,

enter image description here

如上图所示,您将拥有RadioGroup类似的内容

enter image description here

  • RadioGroup的方向更改为水平
  • 对于每个RadioButton的属性,请尝试为Button提供图标 在CompoundButton下,
  • 调整填充和大小,
  • 并在选中时设置Background属性。

答案 5 :(得分:0)

如果您要以编程方式进行操作,

checkBoxOrRadioButton.setButtonDrawable(null);
checkBoxOrRadioButton.setBackgroundResource(R.drawable.resource_name);