android: windowSoftInputMode = "AdjustResize" и Recyclerview - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть вертикально ориентированный макет в следующем порядке:

  1. Заголовок таблицы, определенный как LinearLayout
  2. Строки, определенные как обзор переработчика
  3. TextInputLayout
  4. Другой TextInputLayout
  5. кнопка

Представление реселлера динамически заполняется результатами сетевого запроса.

Прежде, чем я нажму любой TextInputLayout, я хочу увидеть таблицу (1 и 2) вверху страницы, а все остальное под ней.

Если щелкнуть TextInputLayout (3 или 4), появится клавиатура, и представление реселлера (2) должно уменьшиться снизу. Вот макет:

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

<ProgressBar
    android:id="@+id/pb"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"/>

<LinearLayout
    android:id="@+id/header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="gone">
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/id"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/first_name"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/last_name"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/telephone"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/address"/>
</LinearLayout>

<android.support.v7.widget.RecyclerView
    android:id="@+id/rv"
    android:layout_width="match_parent"
    android:layout_height="@dimen/table_height"
    android:layout_below="@id/header"
    android:layout_above="@id/input_layout_name"/>

<TextView
    android:id="@+id/update_btn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:text="@string/update"
    android:visibility="gone"/>

<android.support.design.widget.TextInputLayout
    android:id="@+id/input_layout_phone"
    android:layout_above="@id/update_btn"
    android:layout_width="@dimen/input_width"
    android:layout_height="wrap_content"
    android:visibility="gone">

    <EditText
        android:id="@+id/input_amount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/phone_hint" />

</android.support.design.widget.TextInputLayout>

<android.support.design.widget.TextInputLayout
    android:id="@+id/input_layout_name"
    android:layout_above="@id/input_layout_phone"
    android:layout_width="@dimen/input_width"
    android:layout_height="wrap_content"
    android:visibility="gone">

    <EditText
        android:id="@+id/input_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/name_hint" />

</android.support.design.widget.TextInputLayout>

Запись манифеста для этого выглядит как

<activity android:name=".activities.DetailsActivity"/>

, чтобы уменьшить окно реселлера после появления клавиатуры. Это ничего не уменьшало до тех пор, пока я не сказал вьюблеру макет выше первого TextInputLayout.

До появления клавиатуры я заметил зазор, равный высоте 2 TextInputLayouts между заголовком таблицы (1) и строками (2). Когда клавиатура появляется, окно рециркулятора сдвигается вверх и удаляет зазор, чтобы идеально сидеть под заголовками. Как мне исправить мою раскладку, чтобы держать таблицу вместе, сжиматься при появлении клавиатуры?

Заранее спасибо

...