У меня есть вертикально ориентированный макет в следующем порядке:
- Заголовок таблицы, определенный как LinearLayout
- Строки, определенные как обзор переработчика
- TextInputLayout
- Другой TextInputLayout
- кнопка
Представление реселлера динамически заполняется результатами сетевого запроса.
Прежде, чем я нажму любой 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). Когда клавиатура появляется, окно рециркулятора сдвигается вверх и удаляет зазор, чтобы идеально сидеть под заголовками. Как мне исправить мою раскладку, чтобы держать таблицу вместе, сжиматься при появлении клавиатуры?
Заранее спасибо