15

Ich bin ein Chat-Fenster zu entwickeln. Es besteht aus CollapsingToolbarLayout für Benutzerprofilbild, RecyclerView für Nachrichtenliste und einem Bearbeitungsfeld zum Senden von Nachrichten. Ich kann nicht herausfinden, ob es möglich ist, das Eingabefeld am unteren Bildschirm anzumelden und zu verhindern, dass es mit dem Rest des Bildschirms scrollt?CoordinatorLayout mit RecyclerView und unten festgelegten EditText

ich fast erreicht, was ich will, wenn ich CoordinatorLayout in einer vertikalen Linearlayout wickeln und EditText außerhalb von CoordinatorLayout setzen. In diesem Fall ist das Verhalten der Tastatur jedoch von der RecyclerView getrennt - es wird beim Öffnen der Tastatur nicht nach oben/unten gescrollt.

Wenn ich versuche, EditText innen CoordinatorLayout um es aus dem Bildschirm scrollt, ich weiß nicht, ob es eine spezielle Verhalten ist Ich muss eingestellt dafür

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> 
+0

gut, wollen, wenn Sie wirklich 'EditText' am unteren Rande des Bildschirms sollten Sie es von' CoordinatorLayout' ausschließen und es in Ihrem activ setzen Layout. Die zweite sollte 'RelativeLayout' sein, so dass Sie der Lage wäre, ein EditText Attribute wie' android zu geben: layout_alignParentBottom = „true“ ' – piotrek1543

+1

@ piotrek1543 Vielen Dank für Ihre Bemühungen, aber leider - Sie helfen wirklich überhaupt nicht :) Bitte lese meine Frage noch einmal - ich habe CoordinatorLayout in ein LinearLayout eingepackt und mein Editiertext wird genau so gepinnt, wie ich es möchte. Aber dann Tastatur scrollen nicht die RecyclerView – Anton

+1

In Bezug auf Ihre coordinatorlayout Ausgabe, android: isScrollContainer = „true“ wird dies beheben, ist der Name etwas irreführend, aber die Kommentare sind die Schlüssel: Stellen Sie diese Option, wenn die Ansicht als Scrollen dienen container, was bedeutet, dass die Größe geändert werden kann, um das gesamte Fenster zu verkleinern, so dass Platz für eine Eingabemethode besteht. Wenn nicht gesetzt, ist der Standardwert wahr, wenn für "Bildlaufleisten" die vertikale Bildlaufleiste festgelegt ist, andernfalls ist dies der Wert "false". –

Antwort

9

diese hinzufügen in Ihrem EditText, mein Freund, wie ein floatingActionButton

app:layout_anchor="@id/your bottom view id" 
    app:layout_anchorGravity="bottom|right|end" 
+0

Aber EditText liegt oberhalb Recycler Ansicht in diesem Fall –

+0

es für mich gearbeitet ... Dank eric –