2012-09-11 104 views
2

我禁用软键盘通过:setInputType(InputType.TYPE_NORMAL)EditText视图。正如我所料,键盘被禁用。视图上的光标也随着它消失。EditText缺少光标

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

在此先感谢。

+1

你试过类似editText.requestFocus()的东西吗? – user1049280

回答

0
setCursorVisible(true) this can show the cursor! 

android:cursorVisible="false" 
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中的项目/属性/ Android /项目构建目标 - 可能只是最新的API将最好),并且必须将清单文件中的targetSdkVersion设置为11(同样,匹配你编译的API可能是最好的)。

看到这个答案,了解有关选择性使用的是可在一些功能的详细信息,但不是所有的API级别的应用程序被宣布为支持:

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

我没试过这种做法尚未完成,但打算最终完成。与此同时,如果其他人尝试,请在下面添加一条评论,指出这是否是一种很好的解决方法。

+0

我在运行5.1.1的Nexus 7上编译到Project Build Target 22的经验是,setTextIsSelectable(true)会导致软键盘甚至在点击该字段时(甚至没有连接外部键盘)都不会出现。另外,setCursorVisible()仍然不能解决问题。很抱歉,但上面的建议(我的)不是一个好的建议。这仍然是一个问题,我没有一个很好的解决方法。 – Carl

0

我面临同样的问题,所以我已经在清单文件中添加了下面的内容,并解决了问题。 在你的活动中添加windowSoftInputMode:

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