15

Sto sviluppando una schermata di chat. È costituito da CollapsingToolbarLayout per l'immagine del profilo utente, RecyclerView per l'elenco dei messaggi e una casella di modifica per l'invio di messaggi. Non riesco a capire se è possibile bloccare la casella di modifica sullo schermo inferiore e impedirgli di scorrere con il resto dello schermo?CoordinatorLayout con RecyclerView e testo in fondo EditText

Ho ottenuto quasi ciò che voglio se avvolgo CoordinatorLayout in un LinearLayout verticale e metto EditText all'esterno di CoordinatorLayout. Tuttavia in questo caso il comportamento della tastiera è scollegato da RecyclerView - non scorre su/giù quando si apre la tastiera.

Se provo a mettere dentro EditText CoordinatorLayout scorre fuori dello schermo, non so se v'è alcun comportamento speciale ho bisogno di impostare per esso

mio 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

bene, se si vuole veramente a 'EditText' nella parte inferiore dello schermo si dovrebbe escluderlo dal' CoordinatorLayout' e metterlo in activ layout. Il secondo dovrebbe essere 'RelativeLayout', quindi saresti in grado di fornire degli attributi EditText come' android: layout_alignParentBottom = "true" ' – piotrek1543

+1

@ piotrek1543 apprezzo i tuoi sforzi, ma mi dispiace - non stai affatto aiutando affatto :) Per favore leggi ancora una volta la mia domanda: ho avvolto CoordinatorLayout in un LinearLayout e il mio edittext è bloccato proprio come lo voglio io. Ma poi la tastiera non scorre il RecyclerView – Anton

+1

Per quanto riguarda il tuo problema di coordinatorlayout, android: isScrollContainer = "true" risolverà questo problema, il nome è in qualche modo fuorviante ma i commenti sono la chiave: Imposta questo se la vista servirà come scorrimento contenitore, il che significa che può essere ridimensionato per restringere la finestra generale in modo che ci sia spazio per un metodo di input. Se non impostato, il valore predefinito sarà true se "scrollbars" ha la barra di scorrimento verticale impostata, altrimenti sarà false. –

risposta

9

Aggiungere questo nel vostro EditText, il mio amico, proprio come un floatingActionButton

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

Ma EditText giace sopra la vista del riciclatore in questo caso –

+0

ha funzionato per me ... grazie eric –

Problemi correlati