2013-07-17 2 views
2

Я хочу сделать следующее. Пользователь должен иметь возможность вводить одну букву (только букву) со стандартной клавиатуры (аппаратное или программное обеспечение). Если он набирает другое письмо, тогда предыдущее письмо должно быть заменено этим. Поэтому должна отображаться только текущая буква. Пользователь должен уметь отменить это диалоговое окно и вернуться к активности. И если он нажал кнопку «done» на клавиатуре, активность должна знать, в какую букву он вошел.Клавиатура не отображается, когда EditText находится в фокусе

Так что я подумал о диалоговом окне предупреждения и отредактировал текст с некоторыми расширениями, чтобы отображать только текущий символ. Это легко.

Однако, это меня уже сходит с ума, хотя текст редактирования находится в фокусе, клавиатура не появляется на экране до тех пор, пока не будет нажат отредактированный текст. Почему это так? Должно быть, не так ли?

Для ответа я не буду брать что-то вроде следующего, потому что мне не нужно будет делать это вручную. Он должен быть автоматическим. Кроме того, я не уверен, как это будет работать с аппаратной клавиатурой.

InputMethodManager imm = InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(YourEditText.getWindowToken(), 0); 

Я хочу знать, почему именно клавиатура не отображается после того, как текст редактирования имеет фокус? И что мне делать, чтобы получить эту функциональность без ручного включения и отключения клавиатуры программного обеспечения.

ответ

0

Используйте это.

EditText yourEditText= (EditText) findViewById(R.id.yourEditText); 
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT); 
+0

Вы читали мой вопрос? Я сказал, что не буду использовать это обходное решение в качестве ответа. Я хочу знать, почему это происходит. Должно ли это случиться? – user1685095

+0

Ну, как вопрос был изначально сформулирован, неясно, не возьмете ли вы это в качестве ответа или хотите принять это как ответ. –

0

Для информации см этот родственный вопрос: Why the soft keyboard shows or not when an activity starts?. Вы можете прочитать это как альтернативу, включив свой EditText в ScrollView.

Но это не больше удовлетворения, чем хорошо известный обходной путь (вручную позволяя программную клавиатуру), потому что мы не понимаем, почему это работает лучше в этом случае ...

Смежные вопросы