android - ListView 内可聚焦的 EditText

标签 android android-layout android-listview android-edittext

到目前为止,我已经在这方面花费了大约 6 个小时,除了遇到障碍之外什么也没遇到。一般前提是 ListView 中有一些行(无论是由适配器生成,还是作为标题 View 添加)包含一个 EditText 小部件和一个 按钮。我想要做的就是能够使用旋转球/箭头,像平常一样将选择器导航到各个项目,但是当我到达特定行时(即使我必须明确识别该行),该行具有可聚焦的 child ,我希望该 child 获得焦点,而不是使用选择器指示位置。

我尝试了很多可能性,但到目前为止还没有成功。

布局:

<ListView
    android:id="@android:id/list" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"
    />

标题 View :

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 的混合,其中不是列表设置如果所有项目是否可聚焦,我想为单个<设置可聚焦性/em> 列表中的项目,以便选择器从选择不可聚焦项目的整行无缝过渡到遍历焦点树以查找包含可聚焦子项的项目。

有人接受吗?

最佳答案

这对我有帮助。
在您的 list 中:

<activity android:name= ".yourActivity" android:windowSoftInputMode="adjustPan"/>

关于android - ListView 内可聚焦的 EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58535740/

相关文章:

Android Rest 服务引擎

android - 在键盘关闭时删除由 ListView 行托管的 EditText 中添加的文本

java - 扩展 RoboActivity 会出现 ClassNotFoundException

android - Dagger 2 : cannot be provided without an @Inject constructor or from an @Provides-annotated method

Android - TextView 中的文本不左对齐/垂直对齐

android - 带有图标的弹出菜单

android - 无法在选项卡中设置 ListView

android - 首选项屏幕中的文本大小问题

android - 我如何修复 Android 中位置、适配器和 ListView 的这个错误?

android - 如何在调用 onCreateContextMenu() 后取消创建上下文菜单