升级到姜饼后无法更改软键盘进入“完成”按钮

时间:2012-04-07 00:36:46

标签: android keyboard android-2.3-gingerbread

非常简单: inputField.setImeOptions(EditorInfo.IME_ACTION_DONE); 用于使我的软键盘显示“完成”键而不是carraige返回。

由于我将手机(三星Galaxy S)更新为姜饼,这行代码无效。

有什么想法吗?

3 个答案:

答案 0 :(得分:9)

我也看到了这个问题,我相信当你没有设置inputType时会发生这个问题。实际上,如果imeOptions设置为inputType(默认值),则所有EditorInfo.TYPE_NULL属性(以及其他一些属性)都会被完全忽略。

所以给其中一个镜头(我选择next,但你可以放任何类型):

<强> XML:

    android:inputType="text"
    android:imeOptions="actionNext"

<强> JAVA

    text.setInputType(EditorInfo.TYPE_CLASS_TEXT);
    text.setImeOptions(EditorInfo.IME_ACTION_NEXT);

如果您真的想要坚持下去,可以使用setImeActionLabel('Add', SOME_ID)并完全配置操作键(还有xml等效项)。

话虽如此。我对你的个人设备完全错了,但我认为这很容易测试,似乎总能解决我的问题所以我应该分享。

答案 1 :(得分:5)

我一直在研究同样的问题。您设备上的IME(输入法编辑器)出现故障,并且不会在软键盘或下一个按钮中显示完成按钮。 HTC sense有自己的软键盘,无法识别ime指令。还有其他人,你的三星显然是一个。这是我第一次长时间进入android碎片。

我确实尝试在XML中设置它,膨胀,创建一个帮助器类,以及一堆其他东西。我松了一口气,发现它根本不起作用。

所以现在我们必须添加一个完成按钮,而不是键盘编辑器完成输入。我将它添加到我的编辑文本的末尾,使用相对布局来对齐它们。我会留下具有该功能的IME代码....这是唯一的快速解决方案,另一种是为您的应用编写完整的自定义软键盘。

答案 2 :(得分:0)

我已在方法unittest内检查,在此方法结束时,InputMethodManager重新启动键盘。所以这是改变imeOptions的触发器,不是 InputType.TYPE_NULL。

TextView.setInputType

注意:

将setInputType设置为具有相同的先前值,并没有给出任何效果以便重新启动imm(这不会关闭kb,只刷新按钮)。

同样private void changeInputTypeAndImeOptions(EditText fieldValue, int inputType, int imeOption) { if (inputType == InputType.TYPE_NULL) inputType = fieldValue.getInputType(); fieldValue.setImeOptions(imeOption | EditorInfo.IME_FLAG_NO_FULLSCREEN); //Makes the trigger for the imeOptions to change while typing! //fieldValue.setInputType(InputType.TYPE_NULL); fieldValue.setInputType(inputType); InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) imm.restartInput(fieldValue); } 会产生不良影响,返回按钮在多个集合中可见,这就是为什么被评论并且应该删除它。最好用imm重新启动kb。