Я пытаюсь реализовать представление входа в систему, где несколько EditTexts и логотип отображены на экране с ButtonBar внизу, чем-то вроде этого:
сопроводительный текст http://russellhaering.com/media/addAccount.png
Проблема состоит в том, что на очень маленьких экранах, особенно когда они повернуты боком, все основное представление не соответствует на экран.
Я в настоящее время имею
Я попытался инкапсулировать первый LinnearLayout в ScrollView, который похож на это:
Но это представляет две проблемы:
ScrollView не прокручивает, даже на экранах, где данные все не соответствуют
ButtonBar плавает сверху экранной клавиатуры, затеняя еще больше экрана, когда клавиатура подходит.
Все работавшее отлично, когда у меня были кнопки в ScrollView, но теперь, когда у меня есть они в ButtonBar, я испытываю много затруднений, понимая это.
Оказалось, что решение требует двух шагов:
Невозможность прокрутки была результатом того, что ScrollView находился за панелью кнопок. Чтобы исправить это, я определил ScrollView под панелью кнопок, а затем использовал android: layout_above = "@ id / buttonbar_login"
, чтобы заставить ScrollView полностью находиться над панелью кнопок.
Очевидно, что при открытии экранной клавиатуры, если у вас есть ScrollView, он будет изменен, позволяя панели кнопок всплывать вместе с клавиатурой. Чтобы исправить это, я изменил манифест и добавил android: windowSoftInputMode = "adjustPan", чтобы предотвратить изменение размера ScrollView.
Если ваш вариант использования поддерживает скрытие панели кнопок в альбомной ориентации, вы можете проверить Ресурсы .getSystem (). getConfiguration (). Ориентация == Configuration.ORIENTATION_LANDSCAPE
и установите панель кнопок на View.GONE
.
Возможно, вам также потребуется установить android: windowSoftInputMode = "adjustResize"
для
в вашем файле манифеста. Android автоматически поместит его в adjustResize
, только если корневой макет - ScrollView
(iirc).