2010-08-04 2 views
1

У меня есть макет, который имеет один большой вид EditText сверху + пучок кнопок внизу. EditText позволяет сжиматься и расширяться, когда ime активируется/деактивируется с помощью adjust_resize. Кнопки внизу выдвинуты вверх над ime.Android Soft Keyboard: как манипулировать представлениями на клавиатуре вкл./Выкл.

Я хотел бы скрыть эти кнопки, когда отображается ime, чтобы предоставить достаточно места для просмотра EditText.

Я до сих пор пытался следующее:

  • подклассов EditText и при условии своей деятельности возможности зарегистрировать обратный вызов на OnSizeChanged представления.

  • Использовал этот обратный вызов, чтобы изменить видимость кнопок (на самом деле контейнера компоновки) до GONE.

Это работает нормально и скрывает кнопки, когда всплывает ime. Однако EditText не распространяется на новое доступное пространство. Кроме того, когда ime отключен, поле EditText теперь больше, чем было первоначально, нажимая кнопки (теперь показывающие) за пределы экрана.

Я также должен добавить, что при вводе первой буквы в представление, а ime отображает параметры слова, экран перерисовывается, а EditText заполняет свободное пространство.

Любые идеи о том, как заставить это работать? Или еще лучше, есть ли более простое решение для моего требования?

Благодаря ...

NB: На мой взгляд, прокрутка не является хорошим вариантом.

ответ

1

я получил эту работу, изменяя описанный выше метод немного:

  • Обернул весь макет с FrameLayout

  • подклассы FrameLayout и при условии своей деятельности возможности зарегистрировать обратный вызов на расположение OnMeasure

Это дает активности возможность изменить видимость представлений до их измерения.

Я все еще был бы очень рад услышать про более простые решения, особенно в отношении выяснения, видна ли клавиатура в настоящее время или нет. (окно dumpsys показывает эту информацию. Мы можем легко добраться до него?)

0

Вы пытались позвонить по номеру myView.invalidade()?

Я использовал свойство GONE, но затем был изменен на button.setVisibility(View.INVISIBLE);, потому что у меня нет других вещей на моем экране.

При настройке adjust_resize вам нужно будет снова проверить, когда клавиатура ушла и снова отобразить кнопки.

+0

Спасибо @Eduardo. Я пробовал myView.invalidade(). Не повезло. Мне нужно использовать GONE, поскольку я хочу, чтобы пространство занимало кнопки. Я уже проверяю и изменяю видимость до VISIBLE, когда клавиатура ушла. Я описал результат. Еще раз спасибо. – OferR

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