我们做过项目的或多或少做过类似这样的一个功能:当点击某个组件后,组件的背景改变。初学者往往是这么一个思路:给组件设置一个监听器,当监听到事件的时候,改变组件的状态(背景图片或者背景色)。当然,这种做法是完全正确的,但是当组件特别多的时候,要处理的代码很多,很繁琐,android提供了一个selector(选择器)来改变界面的状态。下面我们以改变一个button背景来介绍它的具体用法。
1.因为selector是在Drawable文件夹下配置的,所以首先在Drawable文件夹下新建一个android xml文件
2.然后在button_selector.xml中添加以下代码
//被按下的背景
<item android:state_pressed="true"
android:drawable="@drawable/cancel_small_click"/>
//获得焦点时的背景
<item android:state_focused="true"
android:drawable="@drawable/cancel_small_unclick"/>
//默认时的背景
<item android:drawable="@drawable/cancel_small_unclick" />
3.最后,使用这个xml文件,有两种方式:
(1)第一种是在组件中配置:android background=“@drawable/button_selector"即可实现
(2)第二种是在代码中使用:Drawable drawable = getResources().getDrawable(R.drawable.button_selector); Button.setSelector(drawable)
注1:列表设置selector后有可能显示为黑,需要加上android:cacheColorHint="@android:color/transparent"
注2:Button的selector还有其他的效果
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。以下就是配置button中的文字效果:drawable/button_font.xml
当然Button还可以实现更复杂的效果
结伴旅游,一个免费的交友网站:www.jieberu.com
推推族,免费得门票,游景区:www.tuituizu.com