Пуш-ап содержимого при нажатии в редактировании текста
Я искал везде для решения моей проблемы, но не могу найти ответ. Вот в чем проблема.
у меня есть макет, который выглядит так
теперь, когда я нажимаю на редактировать текст (панель поиска), я хочу, чтобы произошло следующее
мягкая клавиатура в основном должна подталкивать весь контент экранов, чтобы панель поиска была вверху, а ее listview-под ней, чтобы при поиске контента отобразятся результаты. Я пробовал установить android:windowSoftInputMode="adjustPan"
до Activity
в манифесте, но это не работало. Я установил вид прокрутки в качестве основного контейнера в основном макете, который содержит фрагменты, но это также не сработало. Я попытался добавить текст редактирования (панель поиска) в качестве заголовка в представление списка, но это также не сработало. Каждый раз, когда клавиатура нажимала на текст редактирования, но закрывала представление списка. Есть ли способ заставить это работать?
10 ответов:
на самом деле, если вы хотите, чтобы весь макет панорамирования, чем вы должны использовать :
SOFT_INPUT_ADJUST_PAN
значение:
getActivity().getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
это будет держать клавиатуру закрытой и при открытии он будет толкать всю вашу деятельность вверх.
Это может быть использовано в классе фрагментов для перемещения текста редактирования вверх и прокрутки до конца.
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Это будет работать наверняка, если ваша тема активности фрагмента не находится в полноэкранном режиме.
надеюсь, что это поможет!
это сработало для меня.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
я столкнулся с подобной проблемой, решение было простым.
Если тема в действии установлена как полноэкранный режим
@android:style/Theme.Holo.NoActionBar.FullScreen
, клавиатура не подталкивала содержимое вверх.после того, как я изменил активность на
@android:style/Theme.Holo.NoActionBar
клавиатура теперь вытеснить содержимое вверх.
попробовать
android:windowSoftInputMode="adjustResize"
в файле манифеста.возможно, Вам придется делать
android:windowSoftInputMode="adjustResize|adjustPan"
... У меня действительно нет ничего сопоставимого с вашей установкой для тестирования...ваша проблема из-за этого (из документов для adjustPan, акцент мой):
главное окно-активность не изменяется, чтобы освободить место для мягкой клавиатура. Скорее, содержимое окна автоматически перемещается так что текущий фокус никогда не затемняется клавиатура и пользователи всегда можно увидеть, что они набирают
учитывая это, ваш список скрывается, потому что EditText сверху имеет фокус. Единственное, что я могу в настоящее время думать, это переместить EditText так, чтобы он был ниже списка. Затем при нажатии вверх, ваш список все еще должен быть виден над EditText.
это сработало для меня, для фрагмента, просто объявите его в Манифесте с активностью:
android:windowSoftInputMode="adjustPan"
Удачи!
Я не мог найти решение для макета, чтобы изменить автоматически, поэтому мне пришлось взломать его. Я использовал код, который я нашел здесь в моей основной деятельности, чтобы определить, когда клавиатура открыта. Я просто добавил код для вызова метода, который скрывает два моих верхних фрагмента при открытии клавиатуры. Это не совсем то, что я хотел сделать, но это работает.
Я использую это для моего
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
работает каждый раз!
Если кто-то все еще сталкивается с этой проблемой:
<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"
Я надеюсь, что это решает вашу проблему - это сработало для меня.