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>
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
@ 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
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. –