【问题标题】:EditText missing cursorEditText 缺少光标
【发布时间】:2012-09-11 09:40:49
【问题描述】:

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

不知道有没有办法在键盘被禁用时让光标返回?

提前致谢。

【问题讨论】:

  • 你试过像editText.requestFocus()这样的东西吗?

标签: android cursor android-edittext


【解决方案1】:

这是一个报告的 Android 问题:

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

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

cmet 中针对上述问题提出了一些解决方法,但它们似乎并非在所有情况下都有效。

我的测试表明,在我的 Nexus One 手机上的 Android 2.3.3 中没有出现该问题(使用禁用软输入的蓝牙键盘时),在我的 Nexus 7 平板电脑上的 Android 4.3 中确实出现了同样的情况.这与上面链接的问题上的 cmets 一致,表明 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 级别可用功能的更多信息,请参阅此答案:

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

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

【讨论】:

  • 我在运行 5.1.1 的 Nexus 7 上编译为 Project Build Target 22 的经验是 setTextIsSelectable(true) 会导致在点击该字段时软键盘甚至不会出现(并且没有外部键盘已连接)。此外, setCursorVisible() 仍然不能解决问题。很抱歉,但上述(我的)建议不是一个好建议。这仍然是一个问题,我没有很好的解决方法。
【解决方案2】:
setCursorVisible(true) this can show the cursor!

android:cursorVisible="false"

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 2012-07-23
      • 2017-03-10
      • 2011-07-05
      相关资源
      最近更新 更多