web-dev-qa-db-ja.com

RecyclerViewと下部に固定されたEditTextを使用したCoordinatorLayout

チャット画面を開発しています。これは、ユーザープロファイル画像用のCollapsingToolbarLayout、メッセージリスト用のRecyclerView、およびメッセージを送信するための編集ボックスで構成されています。編集ボックスを下部の画面に固定して、画面の他の部分と一緒にスクロールできないようにすることができるかどうかわかりませんか?

CoordinatorLayoutを垂直のLinearLayoutでラップし、EditTextをCoordinatorLayoutの外に配置すると、ほぼ期待どおりの結果が得られました。ただし、この場合、キーボードの動作はRecyclerViewから切り離されています。キーボードを開いても、上下にスクロールしません。

EditTextをCoordinatorLayout内に配置しようとすると、画面からスクロールアウトしますが、設定する必要のある特別な動作があるかどうかわかりません。

私のレイアウト

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
   xmlns:Android="http://schemas.Android.com/apk/res/Android"
   xmlns:app="http://schemas.Android.com/apk/res-auto"
   xmlns:tools="http://schemas.Android.com/tools"
   Android:id="@+id/keyboard_listener"
   Android:layout_width="match_parent"
   Android:layout_height="match_parent"
   Android:orientation="vertical"
>

<Android.support.design.widget.CoordinatorLayout
    Android:id="@+id/coordinator"
    Android:layout_width="match_parent"
    Android:layout_height="0dp"
    Android:layout_weight="1"
    >

    <RecyclerView
       Android:id="@Android:id/list"
       Android:layout_width="match_parent"
       Android:layout_height="match_parent"
       Android:clickable="true"
       Android:clipToPadding="false"
       Android:focusableInTouchMode="true"
       Android:paddingBottom="20dp"
       Android:scrollbarStyle="outsideOverlay"
       Android:scrollbars="vertical"
       Android:transcriptMode="normal"
       app:layout_behavior="@string/appbar_scrolling_view_behavior"
       />

    <Android.support.design.widget.AppBarLayout
        Android:id="@+id/app_bar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        >

        <Android.support.design.widget.CollapsingToolbarLayout
            Android:id="@+id/screen_toolbar_container"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
            app:titleEnabled="false"
            >

            <FrameLayout
                Android:id="@+id/toolbar_fragment_container"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                />

            <Toolbar
                Android:id="@+id/screen_toolbar"
                Android:layout_width="match_parent"
                Android:layout_height="?attr/actionBarSize"
                Android:background="@Android:color/transparent"
                Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:layout_collapseMode="pin"
                />

        </Android.support.design.widget.CollapsingToolbarLayout>
    </Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>

        <EditText
            Android:id="@+id/messageEditText"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:background="@null"
            Android:hint="@string/send_hint"
            Android:inputType="textCapSentences|textMultiLine"
            Android:maxLength="2000"
            Android:maxLines="4"
            Android:padding="10dp"
            Android:textSize="14sp"/>

</LinearLayout>
18
Anton

これを、floatingActionButtonのように、私の友人であるEditTextに追加します。

   app:layout_anchor="@id/your bottom view id"
   app:layout_anchorGravity="bottom|right|end"
11
Eric_zhang