在我的应用程序中,我使用以下代码禁用了键盘(我现在使用自定义键盘):
editText.setInputType(InputType.TYPE_NULL);
现在,我的问题是编辑文本时光标不再出现。我该怎么办?任何建议都将不胜感激。
在我的应用程序中,我使用以下代码禁用了键盘(我现在使用自定义键盘):
editText.setInputType(InputType.TYPE_NULL);
现在,我的问题是编辑文本时光标不再出现。我该怎么办?任何建议都将不胜感激。
在错误追踪器中打开了一个问题Issue opened in bug tracker。其中一位用户建议采用这种方法,该方法适用于“大多数”设备。
简而言之,您需要做的就是调用:
editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
如果您在调用editText.setInputType(InputType.TYPE_NULL);
之后查看EditText视图,那么您可能还需要设置:
editText.setTextIsSelectable(true);
为了使文本可选(尽管在三星Galaxy SIII上似乎无法正常工作),可以使用以下方法。请注意,此方法仅从HONEYCOMB(api11)开始提供,因此在开发旧版Android时请牢记这一点。
另外,建议不要让您的 EditText 成为活动启动时接收焦点的第一个视图(如果是,请从另一个视图进行requestFocus()请求)。虽然我(个人而言)没有遇到过任何问题。
android:textIsSelectable=true
。 - JaydeepW我真的不建议这样做。编写一个好的完整的输入法编辑器是非常困难的。此外,用户希望从他们的键盘中获得功能(自动更正、滑动输入、下一个单词预测、更改语言的能力),如果您不花几个月时间来开发键盘本身,就无法提供这些功能。任何不允许我使用Swype的应用都会立即被删除(偏见注:我曾在Swype Android上工作)。
但是,如果您想要完全与操作系统集成为键盘,您将需要编写一个InputMethodService。然后,用户可以在键盘选择菜单中选择您的键盘,并可用于任何应用程序。这是获得完整操作系统集成的唯一方法,否则您将需要从头开始编写自己的EditView。祝你好运,因为设计出一个漂亮的EditView是相当困难的。
另外,将输入类型设置为null并不能禁用大多数键盘。它只是将它们置于哑模式,并关闭预测等功能。
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);
}
<LinearLayout
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableInTouchMode="true" >
<requestFocus />
</LinearLayout>