[关闭]
@zzudhj 2015-09-20T22:25:36.000000Z 字数 1593 阅读 1593

Button selector/ ListView item selector 相关问题分析

未分类


selector是在开发过程中常用到的一种资源文件,在使用的时候大部分都是直接copy够来使用的,可是偶尔也会出现一些问题(自己写的时候)

1.Button中selector

  1. 场景:圆角按钮
  2. 方法一:可以通过图片资源实现,要使用.9图片来做哦,不然适配会很恶心的
  3. 方法二:coding实现,自定义实现资源文件

实现代码如下:

  1. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  2. <item>
  3. <shape>
  4. <solid android:color="#" />
  5. <stroke android:width="1dip" android:color="#" />
  6. <corners android:radius="6dp" />
  7. </shape>
  8. </item>
  9. <item android:state_pressed="true">
  10. <shape>
  11. <solid android:color="#" />
  12. <stroke android:width="1dip" android:color="#" />
  13. <corners android:radius="6dp" />
  14. </shape>
  15. </item>
  16. </selector>

如果直接使用上面代码,会发现selector根本不起作用。???
问题究竟在哪里呢?查看Android官方selector的的使用方法,也不觉的有问题,细心的可以发现,官方文档上的状态其实是有顺序的(默认状态放在第一个),于是乎,修改了一下顺序:

  1. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  2. <item android:state_pressed="true">
  3. <shape>
  4. <solid android:color="#" />
  5. <stroke android:width="1dip" android:color="#" />
  6. <corners android:radius="6dp" />
  7. </shape>
  8. </item>
  9. <item>
  10. <shape>
  11. <solid android:color="#" />
  12. <stroke android:width="1dip" android:color="#" />
  13. <corners android:radius="6dp" />
  14. </shape>
  15. </item>
  16. </selector>

ok。只想提醒大家,在码代码的时候要特别小心,有时候自己粗心的copy,会给自己带来一些麻烦,导致工作效率低下啊。
这里是 selector的参考文章

2.ListView中selector

在使用ListView的过程中,会经常遇到各种selector的问题:在listView中设置,在item中设置, 还是无效。。。。
有这么一个属性descendantFocusability,值得关注一下
API描述:
android:descendantFocusability

  1. Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.
  2. Must be one of the following constant values.

copy
通常情况下会在item中android:descendantFocusability="blocksDescendants" 使得子空间直接获得焦点(在item中,listView的item对item中有的点击事件进行拦截,我们可以通过descendantFocusability,使得item中的子空间优先获得焦点)
参考文章 descendantFocusability

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注