2

我通过以下方式禁用了软键盘:setInputType(InputType.TYPE_NORMAL)查看EditText。正如我所料,键盘被禁用。视图上的光标也随之消失。

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

提前致谢。

4

3 回答 3

2

这是 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 开始)。

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

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

Eclipse 中的“构建目标 SDK”和 AndroidManifest.xml 中的 android:targetSdkVersion 之间的区别?

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

于 2013-11-06T11:35:06.893 回答
0
setCursorVisible(true) this can show the cursor!

android:cursorVisible="false"
于 2012-09-11T09:45:59.933 回答
0

我遇到了同样的问题,所以我在清单文件中添加了以下内容并解决了问题。在您的活动中添加 windowSoftInputMode:

<activity
    android:name=".YourActivity"
    android:windowSoftInputMode="adjustPan">
</activity>
于 2016-04-28T09:39:28.253 回答