Android Can';t将软键盘输入更改为";“完成”;升级到姜饼后的按钮

Android Can';t将软键盘输入更改为";“完成”;升级到姜饼后的按钮,android,keyboard,android-2.3-gingerbread,Android,Keyboard,Android 2.3 Gingerbread,非常简单: inputField.setImeOptions(EditorInfo.IME\u ACTION\u DONE) 用来让我的软键盘显示“完成”键,而不是按回车键 自从我把我的手机(三星Galaxy S)升级为姜饼后,这行代码就没有效果了 有什么想法吗?我一直在研究同一个问题。如果设备上的IME(输入法编辑器)出现故障,则不会在软键盘上显示“完成”按钮或“下一步”按钮。HTC sense有自己的软键盘,不能识别ime指令。还有其他的,而你的三星显然就是其中之一。这是我第一次长时间接触a

非常简单:
inputField.setImeOptions(EditorInfo.IME\u ACTION\u DONE)
用来让我的软键盘显示“完成”键,而不是按回车键

自从我把我的手机(三星Galaxy S)升级为姜饼后,这行代码就没有效果了


有什么想法吗?

我一直在研究同一个问题。如果设备上的IME(输入法编辑器)出现故障,则不会在软键盘上显示“完成”按钮或“下一步”按钮。HTC sense有自己的软键盘,不能识别ime指令。还有其他的,而你的三星显然就是其中之一。这是我第一次长时间接触android碎片

我确实尝试过用XML设置它,扩展它,创建一个助手类和一堆其他东西。当我发现它根本不起作用时,我松了一口气


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

我也看到了这个问题,我相信当您没有设置
输入类型时就会出现这个问题。实际上,如果
inputType
设置为
EditorInfo.TYPE\u NULL
(默认值),则所有
imeOptions
属性(以及其他一些属性)都将被完全忽略

因此,试一试(我选择了
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等价物)


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

我已经检查了方法
TextView.setInputType
,在这个方法结束时,InputMethodManager重新启动键盘。因此,这是更改imeOptions的触发器,notInputType.TYPE\u NULL

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);
}
注意:

    android:inputType="text"
    android:imeOptions="actionNext"
使用相同的前一个值设置setInputType,不会产生任何效果,因此重新启动imm会更好(这不会关闭kb,只会刷新按钮)


另外
fieldValue.setInputType(InputType.TYPE\u NULL)有一个坏的影响,返回按钮在多次设置期间可见,这就是为什么会被注释,应该将其删除。最好用imm重新启动知识库。

您试过用XML设置它吗?它是动态创建的edittext。但我会试试看。。。当然,一定有一种方法可以动态地实现这一点?即使它是动态创建的,也可以在运行时膨胀XML。请看,我已经成功地将输入设置为
singleLine(true)
它看起来仍然像carraige return,但它被检测为已完成按钮,roid:singleLine=“true”正在工作!谢谢你,杰森。。我想我会留下我的“完成”按钮以备不时之需。