当前位置:   article > 正文

android中自定义radiobutton的背景色选择默认图标_android radiobutton自定义背景

android radiobutton自定义背景

转载自 [http://mypyg.iteye.com/blog/768471]

RadioButton长成什么样子是由其Background、Button等属性决定的,Android系统
使用style定义了默认的属性,在android源码
android/frameworks/base/core/res/res/values/styles.xml中可以看到默认的定义:

<style name="Widget.CompoundButton.RadioButton">  
<item name="android:background">@android:drawable/btn_radio_ label_background</item>  
<item name="android:button">@android:drawable/btn_radio</item>  
</style>  
  • 1
  • 2
  • 3
  • 4

即其背景图是btn_radio_label_background,其button的样子是btn_radio

btn_radio_label_background是什么?
其路径是android/frameworks/base/core/res/res/drawable-mdpi/btn_radio_label_background.9.png
可以看到是一个NinePatch图片,用来做背景,可以拉伸填充。

btn_radio是什么?
其路径是android/frameworks/base/core/res/res/drawable/btn_radio.xml
是个xml定义的drawable,打开看其内容:

<selector xmlns:android="http://schemas.android.com/apk/res/android">      
<item android:state_checked="true" android:state_window_focused="false"  
 android:drawable="@drawable/btn_radio_on" />  
<item android:state_checked="false" android:state_window_focused="false"  
android:drawable="@drawable/btn_radio_off" />  
<item android:state_checked="true" android:state_pressed="true"  
android:drawable="@drawable/btn_radio_on_pressed" />  
<item android:state_checked="false" android:state_pressed="true"  
android:drawable="@drawable/btn_radio_off_pressed" />  
<item android:state_checked="true" android:state_focused="true"  
 android:drawable="@drawable/btn_radio_on_selected" />  
<item android:state_checked="false" android:state_focused="true"  
 android:drawable="@drawable/btn_radio_off_selected" />  
<item android:state_checked="false" android:drawable="@drawable/btn_radio_off" />  
<item android:state_checked="true" android:drawable="@drawable/btn_radio_on" />  
</selector>  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
<item android:state_checked="true" android:state_pressed="true" 
          android:drawable="@drawable/btn_radio_on_pressed" /> 
  • 1
  • 2

意思即为当radiobutton被选中时,并且被按下时,其Button应该长成btn_radio_on_pressed这个样子

(3)使用xml描述一个drawable
在res/drawable/创建custom_radio_btn.xml

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
<item android:state_enabled="true" android:state_checked="true" android:state_pressed="true"  
android:drawable="@drawable/enabled_on_pressed" />  
<item android:state_enabled="true" android:state_checked="false" android:state_pressed="true"  
android:drawable="@drawable/enabled_off_pressed" />  
<item android:state_enabled="true" android:state_checked="true"  
android:drawable="@drawable/enabled_on" />  
<item android:state_enabled="true" android:state_checked="false"  
android:drawable="@drawable/enabled_off" />  
<item android:state_enabled="false" android:state_checked="true"  
android:drawable="@drawable/disabled_on" />  
<item android:state_enabled="false" android:state_checked="false"  
android:drawable="@drawable/disabled_off" />                
</selector>  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Item顺序是有讲究的,条件限定越细致,则应该放到前面。比如这儿如果把1,2行和3,4行的item交换,那么pressed的就永远无法触发了,因为有item已经满足条件返回了。可以理解为代码中的if语句。

创建一个自定义的style,并应用到RaidioButton的style属性上

<style name="CustomRadioBtn">  
<item name="android:background">@drawable/radio_btn_bg</item>  
<item name="android:button">@drawable/custom_radio_btn</item>  
</style>  
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/733650
推荐阅读
相关标签
  

闽ICP备14008679号