У меня есть несколько элементов в RelativeView с установленным атрибутом выравнивания снизу, когда появляется программная клавиатура, элементы скрываются программной клавиатурой.
Я бы хотел, чтобы они двигались вверх, чтобы при наличии достаточного места на экране они отображались над клавиатурой, или чтобы область над клавиатурой прокручивалась, чтобы пользователь все еще мог видеть элементы.
Любые идеи о том, как подойти к этому?
Ответы:
Да, ознакомьтесь с этой статьей на сайте разработчиков Android, в которой описано, как фреймворк обрабатывает появление программной клавиатуры.
android:windowSoftInputMode
Атрибут может использоваться , чтобы определить , что происходит на основе за активность: будет ли изменен размер макета или прокручивается ли и т.д.источник
Вы также можете использовать этот код в
onCreate()
методе:источник
Добавьте в AndroidManifest.xml свою деятельность:
источник
Внесите изменения в активность вашего файла манифеста, как
ИЛИ
Внесите изменения в свой
onCreate()
метод в классе деятельности, какисточник
похожая проблема, с которой я столкнулся с моим макетом, который состоит из прокрутки внутри. Всякий раз, когда я пытаюсь выделить текст в EditText, панель действий Копировать / Вырезать / Вставить перемещается вверх с кодом ниже, как таковой, он не меняет размер макета.
Изменив его, как показано ниже
1) AndroidManifest.xml
2) файл style.xml, в стиле деятельности
Это сработало.!!!!!!!!!!!!
источник
В AndroidManifest.xml не забудьте установить:
и для RelativeLayout внутри ScrollView установите:
все будет хорошо
источник
Активность в своем методе вставки ниже линии
и для фрагментов в его методе onCreate
источник
Есть 3 шага для прокрутки экрана вверх.
PS Не забудьте добавить android: layout_gravity = "center" в родительский относительный макет.
источник
Я попробовал метод Диего Рамиреса, он работает. В AndroidManifest:
В activity_main.xml:
источник
Добавьте NestedScrollView вокруг макета, который вы хотите прокрутить, это будет отлично работать
источник
Я нашел решение своих проблем, которое довольно похоже на ваше.
Прежде всего, у меня есть только LinearLayout с 2 элементами, ImageView и LinearLayout, который содержит 2 EditText и одну кнопку, поэтому мне нужно было держать их отдельно на полном экране без клавиатуры, и когда клавиатура появляется, они должны выглядеть ближе.
Поэтому я добавил представление между ними с атрибутом высоты в 0dp и weight 1, что позволило мне разделить мои представления друг от друга. и когда клавиатура накладывается, поскольку у них нет фиксированной высоты, они просто изменяют размер и сохраняют аспект.
Вуаля! Размер макета и расстояние между моими представлениями одинаковы, когда клавиатура присутствует или отсутствует.
источник
ConstraintLayout
и закрепляя верхнюю часть сверху и нижнюю часть снизу. Когда клавиатура открывается, она естественным образом изменит размеры, сжимая пространство посередине (если вы используетеadjustResize
)источник
Вот полный код манифеста
источник
если вы разбиты на фрагменты, то вы должны добавить приведенный ниже код в свой onCreate, чтобы решить эту проблему.
источник
В вашем файле манифеста добавьте строку ниже. Это сработает
источник
Я просто добавил следующую строку в макет верхнего уровня, и все заработало:
источник
Хорошо, это очень поздно, однако я обнаружил, что если вы добавите представление списка под вашим текстом редактирования, тогда клавиатура будет перемещать все макеты под этим текстом редактирования, не перемещая ListView.
Это единственное решение, которое сработало для меня.
источник
Ни один совет не решит мою проблему. Настроить панорамирование почти так же, как работа Настроить изменение размера . Если я установил Adjust Nothing, то макет не двигается вверх, но он скрывает мой текст редактирования нижней части, который я пишу правильно. Поэтому после 24 часов непрерывного поиска я нашел этот источник, и он решил мою проблему.
источник
Это может быть поздно, но я хочу добавить несколько вещей. В Android Studio версии 4.0.1 и Gradle версии 6.1.1
windowSoftInputMode
они не будут работать должным образом, если вы добавите следующие флаги в свое действие:Потратив много времени, я нашел этот взломать. Для того, чтобы
adjustResize
илиAdjustPan
или какой-либо атрибутwindowSoftInputMode
работал должным образом, вы должны удалить его из своей деятельности.источник