如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus。
我们可以通过对Item Layout的根控件设置其android:descendantFocusability=”blocksDescendants”来解决,这样Item Layout就屏蔽了所有子控件获取Focus的权限,如此就可以顺利的响应onItemClickListener中的onItenClick()方法了。
android:descendantFocusability有三种属性:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
所以,你应该用第二个设置,这样子控件就可以优先获取到焦点了
这个问题没有试过,不过我想说一下我的思路,你看是否可行:
你可以在窗体中放置一个隐藏的控件,然后写一个委托事件,每当listview焦点改变后,就将该焦点所在的行的ID作为那个隐藏控件的值,每次刷新的时候检查该值,让焦点停留到LIstView中的该行就可以了!
tview控件,里面的数据很多。
用listView1Items[i]Selected = True;属性设置某个项目为选中状态。
会有这么一个问题:位于Listview底端或顶端(就是非当前Listview活动区域)的项目,即便被选中,滚动条不会自动显示该项目,需要手动用鼠标拖动滚动条才能看到那个项目被选中了。
请问怎样才能让Listview中被选中的项目自动获得焦点。
listView1Items[i]Selected = True;
listView1Items[
1将ListView的Item Layout的子控件focusable属性设置为false
2对Item Layout的根控件android:descendantFocusability="blocksDescendant"
例如:
<RelativeLayout
xmlns:android=">
以上就是关于android开发 listview中textview抢焦点问题全部的内容,包括:android开发 listview中textview抢焦点问题、android listView,Button,android:descendantFocusability、android:focusable都已经添加无法获取焦点、android ListView刷新焦点问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)