您的位置:首页 > 其它

ListView中item与其中的组件(按钮)的焦点获取冲突问题

2015-09-29 11:33 288 查看
本人初学在学习安卓时,遇到过这么一问题。在一个ListView 中,每一个子Item中存在Button(类似的其他自动获取焦点的组件)时,ListView的OnItemClickListener和OnItemLongClickListener将变得不可用,而Button却可以使用。从网上查了很多,大家都说是焦点问题,应对这种情况一般有两种方法:
1.设置android:descendantFocusability="blocksDescendants"其中这条有三个属性,对应这一条为阻挡子空间获取焦点,对应另外两条为可自行百度会有很多说法。
本人一开始以为,设置后子空间如button,将不能被点击。后来试了一下,发现当设置后button得点击还是能用的。后来查了以下,说是能click不一定要获取焦点。其次注意在这条属性是在Layout中加这条属性,当加在ListView中是没有效果的,如
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants"
>
[/code]
如图 ,item可以被电击, button也可以被点击。
好多人说是在ListView中加的话是没有效果的。
当只在ListView总加时,如[/code]
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:descendantFocusability="blocksDescendants"
/>是无效的。[/code]
其次需要注意的是别在Layout中加android:clickable="true"
加了以后,无论怎么设置都不管用了。
2.在子控件中加          android:focusable="false"也可以实现,只需在男些自动获取焦点中的组件加如button,checkbox,edittext等就可以了。设置后也还能Click。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: