列表视图中可聚焦的EditText
到目前为止,我已经花了大约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的混合,其中而不是列表设置全项是否可聚焦,我希望将焦点可用性设置为单株项,以便选择器可以无缝地从非可聚焦项的整行选择,以及对包含可聚焦子项的项遍历焦点树。
有人接电话吗?