Подтвердить что ты не робот

Как перемещаться по всему макету, когда отображается клавиатура?

<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"

Начальное поведение:

enter image description here

Текущее поведение:

enter image description here

Желаемое поведение:

enter image description here

Как добиться желаемого поведения макета? adjustResize неподходящий, поскольку этот параметр изменяет размер макета.

Спасибо за ответы!

4b9b3361

Ответ 1

Вероятно, вы хотите посмотреть этот ответ. Предложение от него:

Установить свойство SoftInput Mode окна Window для настройкиPan и adjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

Ответ 2

Единственный способ получить этот результат - изменить размер макета. Использовать android: windowSoftInputMode = "adjustResize"

Ответ 3

попробуйте это в своем манифесте:

android:windowSoftInputMode="adjustResize|stateUnchanged"

Ответ 4

проверьте, является ли макет, содержащий EditText и Button RelativeLayout.

Ответ 5

Попробуйте изменить 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>  

Ответ 6

Вы не сможете реализовать это с помощью adjustPan, потому что из официального руководства

Основное окно операции не изменяется, чтобы освободить место для мягкой клавиатуры. Скорее, содержимое окна автоматически разворачивается так, что текущий фокус никогда не скрывается клавиатурой, и пользователи всегда могут видеть, что они набирают. Это, как правило, менее желательно, чем изменение размера, поскольку пользователю может понадобиться закрыть мягкую клавиатуру, чтобы получить и взаимодействовать с затененными частями окна.

Ваш Button находится ниже текущего фокуса EditText

Ответ 7

удалив нижнюю строку из активности и android: windowSoftInputMode из манифеста, я получил всю прокрутку макета, которая ранее скрывалась

this.getWindow(). setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

проверьте эту выходную видео ссылку: https://mega.nz/#!TpRCWZjY!TqDzv0Yn3Q24PR1JAdH8kRVeDf2iSa1LQbNBgF0SVHk

Ответ 8

Я не верю, что есть простой способ сделать это. По крайней мере, не так просто, как установить флаг. У меня была похожая ситуация, когда клавиатура поднималась до уровня Views намного ниже выбранного EditText. Я закончил тем, что использовал этот ответ: Как проверить видимость программной клавиатуры на Android?

и ручную настройку размеров View, когда клавиатура становится видимой.

Ответ 9

Просто используйте это свойство в действии

android:windowSoftInputMode="adjustPan"