android - EditText 缺少光标

标签 android cursor android-edittext

我通过 EditText View 的 setInputType(InputType.TYPE_NORMAL) 禁用了软键盘。正如我所料,键盘被禁用。 View 上的光标也会随之消失。

我想知道是否有办法在键盘禁用时让光标返回?

提前致谢。

最佳答案

这是 Android 报告的问题:

http://code.google.com/p/android/issues/detail?id=27609

我自己在禁用软键盘以允许使用外部键盘时经历过这种情况。在这种情况下,我无法恢复光标,即使使用 setCursorVisible(true) (如当前问题的另一个答案中所述)也是如此。

针对上述问题的评论中建议了一些解决方法,但它们似乎并不适用于所有情况。

我的测试显示,在我的 Nexus One 手机上的 Android 2.3.3 中(当使用禁用软输入的蓝牙键盘时)不会出现该问题,并且在相同情况下,在我的 Nexus 7 平板电脑上的 Android 4.3 中确实会出现该问题。这与上面链接的问题的评论一致,表明 Android 4.0 及更高版本遇到了该问题。

该问题的一位评论者报告说,调用 setTextIsSelectable() 可以解决该问题,并且此方法的 Javadoc 显示它在 API 级别 11 及更高版本中可用。这意味着它应该在所有出现问题的设备上可用(因为 4.0 从 API 15 开始)。

因此,一种可能的方法是使用反射来测试此方法(或仅测试级别 >= 11 的 API),并调用该方法(如果该方法在设备上可用)。为此,您必须编译为 API >= 11(Eclipse 中的 Project/Properties/Android/Project Build Target - 可能最新的 API 效果最好),并且必须将 list 文件中的 targetSdkVersion 设置为至少11(同样,匹配您编译的 API 可能是最好的)。

有关选择性使用应用程序声明支持的某些(但不是全部)API 级别上可用的功能的更多信息,请参阅此答案:

Difference between "Build Target SDK" in Eclipse and android:targetSdkVersion in AndroidManifest.xml?

我还没有尝试过这种方法,但最终打算尝试。同时,如果其他人尝试这样做,请在下面添加评论,表明这是否是一个好的解决方法。

关于android - EditText 缺少光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12366867/

相关文章:

java - 如何使用android中的回收器 View 将事件放入日历中

java - 检查 Firebase ui 查询类是否未返回任何文档

android - 是否可以在 Android 中实现带指针的鼠标驱动程序?

mysql - 我尝试使用游标在 mysql 8 上的某些表上运行相同的查询。我不明白我的代码有什么问题

android - 停止 EditText 在 Activity 启动时调出键盘?

android - 当编辑文本超过二十个时,如何知道我的编辑文本没有改变

java - 在焦点更改时将 EditText 更改为 TextView

android - 我如何为连接到 firebase 中的用户 ID 的新节点生成唯一 ID

Android Kotlin Coroutine 在 Logcat 中没有报告 fatal error 的情况下崩溃

mysql - Mysql存储过程中如何创建游标