开发用到的:点击歌曲列表的item,希望能让每个item都能展开,列出所具有的打点记录。
情况:
开发中很常见的一个问题:会发生点击每一个item的时候没有反应,无法获取的焦点。
原因:
- 1.在自己定义的Item中存在如:ImageButton,Button,CheckBox等子控件(或是Button或者Checkable的子类控件)
- 2.此时这些子控件会得到焦点,导致当点击item时变化的是子控件,item本身的点击没有响应。
解决方法:
- 使用descendantFocusability来解决
- API描述如下:
android:descendantFocusability
(子孙焦点)
Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.
(定义控件组和子孙间的关系,当获取焦点的时候)
Must be one of the following constant values.
(一定是一个常数值)
也可译为:
当该属性是一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
属性值 | 内容 |
---|---|
beforeDescendants: | viewgroup会“优先”其子类控件而获取到焦点 |
afterDescendants: | viewgroup只有当其“子类控件不需要获取焦点时”才获取焦点 |
blocksDescendants: | viewgroup会“覆盖”子类控件而直接获得焦点 |
通常我们用到的是第三种
即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就