Hou*_*ine 4 android keyboard-layout android-softkeyboard android-edittext
我正在开发一个Android应用程序,我有一个EditText和两个RadioButtons(A和B),
我想要做的是:
当选中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)
有关如何做到这一点的任何想法?
提前致谢.
您定位的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
| 归档时间: |
|
| 查看次数: |
4042 次 |
| 最近记录: |