Android 深入解析selector
selector类同于shape都是xml文件设置控件的属性,然后再进行引用。 selector 基本属性如下:

<?xml version="1.0" encoding="utf-8" ?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<!-- 默认时的背景图片-->

<item android:drawable="@drawable/pic1" />

<!-- 没有焦点时的背景图片-->

<item android:state_window_focused="false" android:drawable="@drawable/pic1" />

<!-- 非触摸模式下获得焦点并单击时的背景图片-->

<item android:state_focused="true" android:state_pressed="true"

android:drawable="@drawable/pic2" />

<!-- 触摸模式下单击时的背景图片-->

<item android:state_focused="false" android:state_pressed="true"

android:drawable="@drawable/pic3" />

<!--选中时的图片背景-->

<item android:state_selected="true" android:drawable="@drawable/pic4" />

<!--获得焦点时的图片背景-->

<item android:state_focused="true" android:drawable="@drawable/pic5" />

</selector>

有以下几种使用方法:

第一种是在listview中配置android:listSelector="@drawable/list_item_bg"

或者在listview的item中添加属性android:background=“@drawable/list_item_bg"即可实现。

或者在java代码中使用:

Drawable drawable =getResources().getDrawable(R.drawable.list_item_bg);

ListView.setSelector(drawable);同样的效果。

但是这样会出现列表有时候为黑的情况,需要加上:android:cacheColorHint="@android:color/transparent"使其透明。

Button的一些背景效果:

android:state_selected是选中

android:state_focused是获得焦点

android:state_pressed是点击

android:state_enabled是设置是否响应事件,指所有事件

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_selected="true" android:color="#FFF" />

<item android:state_focused="true" android:color="#FFF" />

<item android:state_pressed="true" android:color="#FFF" />

<item android:color="#000" />

</selector>

还可以实现selector和shape的嵌套使用:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true">

<!-- 定义当button 处于pressed 状态时的形态。-->

<shape>

<gradient android:startColor="#8600ff" />

<stroke android:width="2dp" android:color="#000000" />

<corners android:radius="5dp" />

<padding android:left="10dp" android:top="10dp"

android:bottom="10dp" android:right="10dp" />

</shape>

</item>

<item android:state_focused="true">

<!-- 定义当button获得focus时的形态-->

<shape>

<gradient android:startColor="#eac100" />

<stroke android:width="2dp" android:color="#333333" color="#ffffff" />

<corners android:radius="8dp" />

<padding android:left="10dp" android:top="10dp"

android:bottom="10dp" android:right="10dp" />

</shape>

</item>




下面是一个效果图:
如有问题请留言,若转载注明出处。

更多相关文章

  1. Android(安卓)深入解析selector
  2. android之View属性
  3. 《Android音频焦点机制深入理解》
  4. Android(安卓)NoteX Q9: PopupWindow setOutsideTouchable 失效?
  5. Android取消EditText自动获取焦点
  6. Android中获得上下文的静态方法
  7. Android的生命周期
  8. [android]浅谈android的selector,背景选择器
  9. Android(安卓)RadioButton背景图片和文字的相对位置

随机推荐

  1. 一篇文章带你初步了解—CSS特指度
  2. JavaScript遍历对象方法总结
  3. 有趣的css—隐藏元素的7种思路
  4. PHP:变量的类型转换方式,变量值传递与值引
  5. 210425 PHP入门
  6. 如何用nodeJs向别的服务器上传文件发送fo
  7. $()的四种类型参数的应用场景实例演示;以
  8. 【php基础入门】细说php的变量以及常量的
  9. 冷月手撕408之操作系统(20)-文件的目录结
  10. 冷月手撕408之数据结构(3)-顺序表