android开发 listview中textview抢焦点问题

android开发 listview中textview抢焦点问题,第1张

如果你的自定义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刷新焦点问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9757467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存