Android之selector的使用

我们做过项目的或多或少做过类似这样的一个功能:当点击某个组件后,组件的背景改变。初学者往往是这么一个思路:给组件设置一个监听器,当监听到事件的时候,改变组件的状态(背景图片或者背景色)。当然,这种做法是完全正确的,但是当组件特别多的时候,要处理的代码很多,很繁琐,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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。