На какую версию Android вы ориентируетесь? Я не могу оставить комментарий извините (новая учетная запись), но в настоящее время создаю тестовый сценарий, чтобы ответить на ваш вопрос.
РЕДАКТИРОВАТЬ: Хорошо, я понял это. После небольшого поиска в Google (см. эта проблема ) и кодирования я обнаружил, что imeOptions, похоже, кэшируются / привязываются к методу ввода. Я не уверен, является ли это ошибкой или преднамеренной функциональностью. Чтобы переключить клавиатуру, когда пользователь нажимает любую радиокнопку, сначала убедитесь, что inputType установлен для вашего EditText (android:inputType="text"
), а затем используйте следующее в вашем 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);
}
});
Обратите внимание на обнуление и повторную настройку InputType.
Наконец, имейте в виду, что многие популярные реализации клавиатуры не имеют значения, на что вы установили imeOptions
, поэтому не полагайтесь на эту функцию в своем приложении. Swype например;
В заключение (посмотрите, что я там сделал?), Чтобы не устареть, я собрал свою тестовую программу. Вы можете найти его здесь: http://dl.dropbox.com/u/52276321/ChangeKeyboardTest.zip