到目前为止,我已经花了大约6个小时来做这件事,除了遇到障碍之外,什么都没有。通常的前提是,ListView
(无论是由适配器生成的还是作为标题视图添加的)行中都包含一个EditText
小部件和一个行Button
。我想要做的就是能够使用慢进/箭头,将选择器导航到正常的单个项目,但是当我到达特定的行时-即使必须明确标识该行-也可以将焦点一个孩子,我希望那个孩子能集中注意力,而不是用选择器指明位置。
我尝试了许多可能性,但到目前为止还没有运气。
布局:
<ListView
android:id="@android:id/list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
标题视图:
EditText view = new EditText(this);
listView.addHeaderView(view, null, true);
假设适配器中还有其他项目,使用箭头键将按预期在列表中上/下移动选择;但是当到达标题行时,它也会与选择器一起显示,并且无法集中到EditText
使用慢跑球。注意:点按EditText
会把它聚焦在该点上,但是这取决于触摸屏,这不是必须的。
ListView
在这方面显然有两种模式:
1 setItemsCanFocus(true)
.:从不显示选择器,但是EditText
使用箭头时可以获取焦点。焦点搜索算法很难预测,并且没有视觉反馈(在任何行上:是否有可聚焦的子对象)都没有选择哪个项目,这两者都可以为用户带来意想不到的体验。
2 setItemsCanFocus(false)
.:选择器始终以非触摸模式绘制,EditText
即使单击它也永远不会获得焦点。
更糟的是,调用editTextView.requestFocus()
返回true,但实际上并没有给予EditText焦点。
我所设想的基本上是1和2的混合形式,而不是列表设置(如果所有项目都可聚焦),我想为列表中的单个项目设置聚焦性,以便选择器从选择整个行用于非焦点项目,并遍历焦点树以查找包含可焦点子项的项目。
有参加者吗?