CoordinatorLayout mit RecyclerView und unten angeheftet EditText

Entwickle ich ein chat-Bildschirm. Es besteht aus CollapsingToolbarLayout für die Benutzer-Profil-Bild, RecyclerView für die Nachrichten-Liste und ein Eingabefeld zum senden von Nachrichten. Ich kann nicht herausfinden, ob es möglich ist, die pin-Eingabefeld auf dem unteren Bildschirm und verhindern, dass es das scrollen mit der rest des Bildschirms ist?

Ich fast erreicht, was ich will, wenn ich wrap CoordinatorLayout in ein vertikales LinearLayout und setzen EditText außerhalb der CoordinatorLayout. Aber in diesem Fall Tastatur-Verhalten ist losgelöst von RecyclerView - es muss nicht nach oben/unten Blättern, wenn Sie öffnen Sie die Tastatur.

Wenn ich versuche ein EditText innen CoordinatorLayout es Schriftrollen aus dem Bildschirm, ich weiß nicht, ob es irgendwelche besonderen Verhalten, das ich brauche, um es

Mein Layout

<?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>
  • nun, wenn Sie wirklich wollen, um EditText am unteren Rand des Bildschirms sollten Sie ausschließen aus CoordinatorLayout und legen Sie Sie in Ihrer Tätigkeit layout. Der zweite sollte RelativeLayout, so würden Sie in der Lage sein zu geben, eine EditText-Attribute wie android:layout_alignParentBottom="true"
  • ich Schätze Ihre Bemühungen, aber sorry - Sie sind wirklich nicht helfen, an alle 🙂 lese Bitte meine Frage noch einmal - ich habe wrap CoordinatorLayout in einem LinearLayout und meine edittext angeheftet ist nur wie ich es will. Aber dann Tastatur nicht mehr scrollen, die RecyclerView
  • In Bezug auf Ihre coordinatorlayout Problem, android:isScrollContainer="true" wird dieses Problem zu lösen, der name ist etwas irreführend, aber die Kommentare sind der Schlüssel: stellen Sie diese, wenn Sie die Ansicht als eine Scroll-container, was bedeutet, dass es kann in der Größe verändert werden, zu verkleinern, seine gesamte Fenster, so dass es Raum für eine input-Methode. Wenn nicht gesetzt, wird der default-Wert true, wenn "scrollbars" hat die vertikale Bildlaufleiste festlegen, sonst wird es falsch sein.
  • Leider ich don T haben eine Lösung für Ihr problem, sondern Ihr vorhandenes setup war gut genug, um mein problem zu lösen. Hoffe, das ist Trost?
  • Sie finden keine Lösung?
  • Ich hatte das gleiche problem. Dies hat mir geholfen stackoverflow.com/a/35405095/9586934

InformationsquelleAutor Anton | 2015-12-15
Schreibe einen Kommentar