非常简单:
inputField.setImeOptions(EditorInfo.IME_ACTION_DONE);
用于使我的软键盘显示“完成”键而不是carraige返回。
由于我将手机(三星Galaxy S)更新为姜饼,这行代码无效。
有什么想法吗?
答案 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。