Ответ 1
Вероятно, вы хотите посмотреть этот ответ. Предложение от него:
Установить свойство SoftInput Mode окна Window для настройкиPan и adjustResize
<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<LinearLayout
android:layout_gravity="bottom"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</FrameLayout>
в манифесте:
android:windowSoftInputMode="adjustPan"
Начальное поведение:
Текущее поведение:
Желаемое поведение:
Как добиться желаемого поведения макета? adjustResize неподходящий, поскольку этот параметр изменяет размер макета.
Спасибо за ответы!
Вероятно, вы хотите посмотреть этот ответ. Предложение от него:
Установить свойство SoftInput Mode окна Window для настройкиPan и adjustResize
<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
Единственный способ получить этот результат - изменить размер макета. Использовать android: windowSoftInputMode = "adjustResize"
попробуйте это в своем манифесте:
android:windowSoftInputMode="adjustResize|stateUnchanged"
проверьте, является ли макет, содержащий EditText и Button RelativeLayout.
Попробуйте изменить FrameLayout
на RelativeLayout
с помощью свойства alignParentBottom="true"
в LinearLayout
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<LinearLayout
android:layout_alignParentBottom="true"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
Вы не сможете реализовать это с помощью adjustPan
, потому что из официального руководства
Основное окно операции не изменяется, чтобы освободить место для мягкой клавиатуры. Скорее, содержимое окна автоматически разворачивается так, что текущий фокус никогда не скрывается клавиатурой, и пользователи всегда могут видеть, что они набирают. Это, как правило, менее желательно, чем изменение размера, поскольку пользователю может понадобиться закрыть мягкую клавиатуру, чтобы получить и взаимодействовать с затененными частями окна.
Ваш Button
находится ниже текущего фокуса EditText
удалив нижнюю строку из активности и android: windowSoftInputMode из манифеста, я получил всю прокрутку макета, которая ранее скрывалась
this.getWindow(). setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
проверьте эту выходную видео ссылку: https://mega.nz/#!TpRCWZjY!TqDzv0Yn3Q24PR1JAdH8kRVeDf2iSa1LQbNBgF0SVHk
Я не верю, что есть простой способ сделать это. По крайней мере, не так просто, как установить флаг. У меня была похожая ситуация, когда клавиатура поднималась до уровня Views намного ниже выбранного EditText. Я закончил тем, что использовал этот ответ: Как проверить видимость программной клавиатуры на Android?
и ручную настройку размеров View, когда клавиатура становится видимой.
Просто используйте это свойство в действии
android:windowSoftInputMode="adjustPan"