Платформа Android Soft плавает только с определенным макетом

У меня есть макет, код ниже

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <!--some stuff here--> <LinearLayout android:id="@+id/layout1" android:layout_alignParentBottom="true" android:layout_above="@+id/layout2" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="5" /> <ImageButton android:layout_width="50dp" android:layout_height="50dp" android:scaleType="fitStart" android:layout_marginLeft="5dp" style="@style/Base.Widget.AppCompat.Button.Borderless" android:src="@drawable/ic_menu_send"/> </LinearLayout> <LinearLayout android:id="@+id/layout2" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <!--some stuff here--> </LinearLayout> </RelativeLayout> 

В приведенном выше коде, когда клавиатура отображается, я хочу, чтобы layout2 оставался bottom а layout1go up with keyboard . Если я добавлю android:windowSoftInputMode="adjustPan|adjustResize" оба макета остаются внизу. пожалуйста помоги

Как вы можете сказать, это не работа

 android:windowSoftInputMode="adjustPan|adjustResize" 

Просто измените это

android:windowSoftInputMode="stateHidden"

И еще одна вещь в вашем нижнем макете

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <!--some stuff here--> <LinearLayout android:id="@+id/layout1" android:layout_alignParentBottom="true" android:layout_above="@+id/layout2" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="5" /> <ImageButton android:layout_width="50dp" android:layout_height="50dp" android:scaleType="fitStart" android:layout_marginLeft="5dp" style="@style/Base.Widget.AppCompat.Button.Borderless" android:src="@drawable/ic_menu_send"/> </LinearLayout> <LinearLayout android:id="@+id/layout2" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="@color/colorPrimary"> <!--some stuff here--> </LinearLayout> </RelativeLayout> 

Иметь ввиду :

Когда вы применили это свойство android:layout_above="@+id/layout2" к layout1 вашего LinearLayout тогда удалите это свойство android:layout_alignParentBottom="true" вам не нужен.

Итак, теперь это выглядит так

  <LinearLayout android:id="@+id/layout1" android:layout_above="@+id/layout2" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> 

Примечание. Я даю background color и specific height LinearLayout 2 для вашего понимания.

Вывод :

Обычный экран

Введите описание изображения здесь

Экран KeyBoard Open.

Введите описание изображения здесь

ImProve:

Введите описание изображения здесь

См. Верхнее изображение. Я делаю Red Mark таким свойством, создающим проблему, иначе все будет работать нормально.

Пожалуйста, используйте это и скажите мне, если вы найдете какие-либо трудности

  <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!--some stuff here--> <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/layout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/layout2" android:layout_alignParentBottom="true" android:orientation="horizontal"> <EditText android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="5" /> <ImageButton style="@style/Base.Widget.AppCompat.Button.Borderless" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="5dp" android:scaleType="fitStart" android:src="@drawable/ic_menu_send" /> </LinearLayout> </ScrollView> <LinearLayout android:id="@+id/layout2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal"> <!--some stuff here--> </LinearLayout> </RelativeLayout> 

Удалите android:windowSoftInputMode="adjustPan|adjustResize"

А затем layout2 программно, когда открыта мягкая клавиатура. Когда мягкая клавиатура закрывается, снова сделайте layout2 видимым.

Это даст пользователю опыт, который вы хотите. Я не уверен, что есть другой способ. Но продолжайте искать. удачи

Используйте разные темы для обоих макетов.

Например: Одна тема относится к атрибуту adjustPan для атрибута windowSoftInputMode.

А другая тема относится к атрибуту adjustResize для атрибута windowSoftInputMode.

Самый быстрый способ – скрыть макеты, когда layout2 мягкая клавиатура, и показать их снова, когда мягкая клавиатура отключена ( layout2 на xml)

Удалите эту линию

 android:windowSoftInputMode="adjustPan|adjustResize" 

Это будет работать, это просто простой способ, я все еще ищу вас

Поместите эту строку в файл манифеста.

  android:windowSoftInputMode="stateHidden" 
Intereting Posts
Как обрабатывать изменение ориентации экрана, когда диалог выполнения и фоновый поток активны? Как поймать событие click на кнопке? Как добавить событие в Календарь Google из Activity? Отправка почты через Implicit Intent с использованием Gmail с изображением в качестве приложения в Android? Android Studio – Estimote SDK – Не удалось найти класс Каковы некоторые способы оптимизации службы на Android? Android – прослушиватель / обратный вызов для того, когда число изменений «Просмотр детей» WebView, показывающий пробел в ICS Безсерверный встроенный noSQL для Android и iOS Не удалось запустить сценарий автоматизации на реальном устройстве Нарисуйте изображение в полноэкранном режиме Android Оптимизация компилятора кода Java в Android Android: определение того, должен ли код находиться в действии или пользовательском представлении Android Alert Dialog заменит синий по умолчанию другим цветом Проблема с запуском эмулятора