обнаружить скрытую программную клавиатуру - PullRequest
1 голос
/ 18 апреля 2011

У меня есть действие с окном редактирования, когда пользователь касается поля ввода, появляется программная клавиатура. если пользователь нажимает аппаратную кнопку «назад», программная клавиатура исчезает. Я хочу обнаружить эту ситуацию. Я посмотрел вокруг, и лучший ответ, который я видел до сих пор, это:

http://groups.google.com/group/android-developers/browse_thread/thread/9d1681a01f05e782

мой вопрос - как вы можете определить, было ли изменено размер окна вашего приложения?

Я добавил этот текст в свои действия в файле манифеста Android: андроид: windowSoftInputMode = "adjustResize"

но я не совсем уверен, как обнаружить изменение.

любая помощь с благодарностью.

Ответы [ 2 ]

1 голос
/ 04 августа 2011

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

Во-первых, вы должны установить для атрибута android: windowSoftInputMode своей активности значение «AdjustResize».

Затем создайте новый класс, который расширяет желаемый тип макета (например, LinearLayout). В этом классе вы можете переопределить несколько различных методов, которые будут вызываться при изменении высоты макета (из-за того, что клавиатура отображается или скрыта). Когда эти вызовы инициированы, вы можете сравнить высоту вашего макета с высотой экрана. Если между ними есть существенная разница (т. Е. Больше, чем просто размер панели уведомлений), клавиатура видна.

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

Если вы хотите более подробное объяснение, я написал его: http://www.cannedcoding.com/2011/08/soft-keyboard.html

0 голосов
/ 18 апреля 2011

Создание службы метода ввода (см. http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html), чтобы прослушивать нажатие кнопки «назад».мягкая клавиатура.

...