Android设备上编辑文本光标不会出现(Android Edit Text Cursor Does

2019-08-06 12:04发布

在我的应用我禁用键盘(我现在用我的自定义键盘),使用此代码:

editText.setInputType(InputType.TYPE_NULL);

现在,我的问题是,文本光标不会在编辑文本再出现。 我该怎么办? 任何建议将是非常赞赏。

Answer 1:

有一个在bug跟踪系统打开的问题在bug跟踪系统开通问题这一点。 一位用户的建议对这些“最”设备工作的方法。

简单地说,所有你需要做的就是调用:

editText.setRawInputType(InputType.TYPE_CLASS_TEXT);

为您的EditText视图(后你叫editText.setInputType(InputType.TYPE_NULL); )。

你应该还设置:

editText.setTextIsSelectable(true);

为了使文本可以进行选择(虽然似乎并不与三星Galaxy SIII正常工作)。 此方法只能从蜂窝 (api11)开始,因此对于较旧的Android版本的开发时,记住这一点。

此外,它是说,你的EditText不应该是活动开始时接收焦点(如果它是-从另一种观点认为只是requestFocus()方法)的第一个观点。 虽然我(个人)没有经历过任何与此问题。



Answer 2:

而不是仅仅使用自定义视图自定义键盘,为什么不实行全面的输入法? 这将解决你的光标的问题,甚至使可用您的应用程序之外键盘(如果你想)。

这个答案有几个有用的链接,如果你想这样做: 如何建立一个软键盘的Android?



Answer 3:

我真的不认为这一点。 写一个很好的羽翼丰满的IME真的很难。 此外,用户来了,从他们的键盘期望的功能(自动校正,Swype输入,词语联想,改变语言的能力),除非你花几个月键盘本身上,你不会有。 任何应用程序,也不会允许我使用Swype输入会立即被删除(偏置注:我曾在Swype的机器人)。

但是,如果你想与OS键盘充分结合,你将不得不写InputMethodService。 然后,您的键盘是在键盘选择菜单的用户选择,并且可用于任何应用程序。 这是得到充分的操作系统集成的唯一途径,否则你将需要真正从刮擦编写自己的EditView中开始。 有乐趣的是,让一个看起来不错的说法无疑是不平凡的。

此外,设置输入型空将不会禁用大多数键盘。 它只是将它们放入哑模式并关闭之类的预测。



Answer 4:

我尝试了以下的答案和它的工作,但要小心,1)EditText上不能集中在初始化2)当你的方向变化,而用户的重点是EDITTEXT,该股键盘弹出,这是另一种“可以解决的”问题。

这是在前面的回答中提到,但照顾,你必须确保你的EDITTEXT元素不要实例获得焦点:

https://code.google.com/p/android/issues/detail?id=27609#c7

#7 nyphb ... @ gmail.com

我终于找到一个(对我)的工作解决了这一点。

第一部分(中的onCreate):

mText.setInputType(InputType.TYPE_NULL);
if (android.os.Build.VERSION.SDK_INT >= 11 /*android.os.Build.VERSION_CODES.HONEYCOMB*/) {
    // this fakes the TextView (which actually handles cursor drawing)
    // into drawing the cursor even though you've disabled soft input
    // with TYPE_NULL
    mText.setRawInputType(InputType.TYPE_CLASS_TEXT);
}

此外,Android:textIsSelectable需要被设置为true(或设置的onCreate)和EditText上不能集中在初始化。 如果您的EditText是第一个可聚焦视图(这是在我的情况),您可以解决此通过把这个它上面:

<LinearLayout
  android:layout_width="0px"
  android:layout_height="0px"
  android:focusable="true"
  android:focusableInTouchMode="true" >
    <requestFocus />
</LinearLayout>


文章来源: Android Edit Text Cursor Doesn't Appear