单击按钮后更改键盘布局

Hou*_*ine 4 android keyboard-layout android-softkeyboard android-edittext

我正在开发一个Android应用程序,我有一个EditText和两个RadioButtons(AB),

我想要做的是:

当选中RadioButtonA时,我想更改键盘布局以使用完成按钮显示它.当选中RadioButtonB时,我想更改键盘布局以使用搜索按钮显示它.

我试图改变IMEOptions我的EditText喜欢这个,但它仍然不起作用:

注意:键盘已经可见,我想要做的只是修改按钮搜索按钮完成在每种情况下两个radioButtons

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if(btnA.isChecked() ) { 
        txtSearch.setImeOptions(EditorInfo.IME_ACTION_DONE);
//      txtSearch.invalidate(); 
    }
    else {
        txtSearch.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
//      txtSearch.invalidate();
    }   
}
Run Code Online (Sandbox Code Playgroud)

有关如何做到这一点的任何想法?

提前致谢.

aar*_*ell 9

您定位的Android版本是什么?我无法发表评论抱歉(新帐户),但我正在做一个测试用例来回答你的问题.

编辑:好的,我已经弄清楚了.经过一些谷歌搜索(参见本期)和编码后,我发现imeOptions似乎被高速缓存/绑定到输入法.我不确定这是一个错误还是故意的功能.要在用户点击任一单选按钮时切换键盘,首先要确保为EditText(android:inputType="text")设置了inputType ,然后在onCreate方法中使用以下内容:

final RadioGroup btn_group = (RadioGroup) findViewById(R.id.btn_group);
final RadioButton btnA = (RadioButton) findViewById(R.id.btnA);
final RadioButton btnB = (RadioButton) findViewById(R.id.btnB);

btn_group.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        final EditText txtSearch = (EditText) findViewById(R.id.edit_text);

        txtSearch.setInputType(InputType.TYPE_NULL);

        if(btnA.isChecked()) {
            txtSearch.setImeOptions(EditorInfo.IME_ACTION_DONE);
        } else {
            txtSearch.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
        }

        txtSearch.setInputType(InputType.TYPE_CLASS_TEXT);
    }
});
Run Code Online (Sandbox Code Playgroud)

注意InputType的归零和重新设置.

最后,请注意许多流行的键盘实现并没有给出你设置的内容imeOptions,所以不要在你的应用程序中依赖这个功能.以Swype为例;

总结(看看我在那里做了什么?),不甘示弱,我已经捆绑了我的测试程序.你可以在这里找到它:http://dl.dropbox.com/u/52276321/ChangeKeyboardTest.zip