Отжимать содержимое при нажатии в текстовом редакторе
Я искал всюду для решения моей проблемы, но не могу найти ответ. Вот проблема.
У меня есть макет, который выглядит как
![Image is here]()
Теперь, когда я нажимаю текст редактирования (панель поиска), я хочу, чтобы следующее произошло
![Image is here]()
Мягкая клавиатура в основном должна подтолкнуть содержимое всех экранов, чтобы строка поиска находилась в верхней части экрана, а ее список - под ней, чтобы при поиске содержимого отображались результаты. Я попытался установить android:windowSoftInputMode="adjustPan"
в Activity
в манифесте, но это не сработало. Я установил вид прокрутки в качестве основного контейнера в основном макете, который содержит фрагменты, но это также не сработало. Я попытался добавить текст редактирования (панель поиска) в виде заголовка в список, но это также не сработало. Каждый раз клавиатура подталкивала текст редактирования, но закрывала вид списка. Есть ли способ сделать эту работу?
Ответы
Ответ 1
На самом деле, если вы хотите, чтобы весь макет был включен, вы должны использовать:
SOFT_INPUT_ADJUST_PAN
значение:
getActivity().getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
это закроет клавиатуру, и когда она откроется, она полностью активирует вашу активность.
Ответ 2
Это можно использовать в классе фрагментов для перемещения Редактировать текст вверх и прокрутка до конца.
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Это будет работать, если ваша тема с фрагментацией не включена в FullScreen.
Надеюсь, это поможет!
Ответ 3
Это сработало для меня.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Ответ 4
Я столкнулся с аналогичной проблемой, решение было простым.
Если тема в действии задана как полноэкранный @android:style/Theme.Holo.NoActionBar.FullScreen
, клавиатура не нажимала содержимое вверх.
После того, как я изменил действие на @android:style/Theme.Holo.NoActionBar
, клавиатура теперь выводит содержимое активности вверх.
Ответ 5
Попробуйте это
android:windowSoftInputMode="adjustResize"
Работаю для меня.
Ответ 6
Попробуйте android:windowSoftInputMode="adjustResize"
в вашем файле манифеста.
Возможно, вам понадобится android:windowSoftInputMode="adjustResize|adjustPan"
... У меня нет ничего сравнимого с вашей установкой, чтобы проверить...
Ваша проблема заключается в этом (из документов для adjustPan, мой удар):
Основное окно операции не изменяется, чтобы освободить место для мягкого клавиатура. Скорее, содержимое окна автоматически разворачивается так что текущий фокус никогда не закрывается клавиатурой и пользователями всегда могут видеть, что они набирают
Учитывая, что ваш список закрыт, потому что EditText сверху сосредоточен. Единственное, что я могу сейчас подумать, это переместить EditText, чтобы он был ниже списка. Затем, когда вы нажимаете вверх, ваш список должен оставаться видимым над EditText.
Ответ 7
Я не мог найти решение для автоматического изменения макета, поэтому мне пришлось его взломать. Я использовал код, который я нашел здесь в своем основном действии, чтобы обнаружить, когда клавиатура открыта. Я просто добавил код, чтобы вызвать метод, который скрывает мои первые два фрагмента при открытии клавиатуры. Это не то, что я хотел сделать, но он работает.
Ответ 8
Это сработало для меня, для фрагмента, просто объявите его в манифесте с активностью:
android:windowSoftInputMode="adjustPan"
Удачи!
Ответ 9
Я использую это для моего EditText
логина:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Некоторые примечания об этом методе:
this
ссылается на контекст, поскольку getActivity()
не всегда предпочтительнее
.SOFT_INPUT_STATE_HIDDEN //for default hidden state when activity loads
.SOFT_INPUT_STATE_VISIBLE //for auto open keyboard when activity loads
Работает каждый раз!
Ответ 10
Если кто-то еще сталкивается с этой проблемой:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:id="@+id/view"
**android:fitsSystemWindows="true"**
android:layout_height="match_parent">
добавить в свой макет:
android:fitsSystemWindows="true"
Надеюсь, это решит вашу проблему - это сработало для меня.