15

Я разрабатываю экран чата. Он состоит из CollapsingToolbarLayout для изображения профиля пользователя, RecyclerView для списка сообщений и поля для отправки сообщений. Я не могу понять, можно ли прикрепить поле ввода к нижнему экрану и предотвратить его прокрутку с остальной частью экрана?КоординаторLayout с RecyclerView и нижним приложением EditText

Я достиг почти того, чего хочу, если обернуть координаторLayout в вертикальном 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> 
+0

хорошо, если вы действительно хотите 'EditText' в нижней части экрана, вы должны исключить его из' CoordinatorLayout' и положить его в эк . Второй должен быть «RelativeLayout», поэтому вы могли бы дать атрибуты EditText, такие как «android: layout_alignParentBottom =« true »' – piotrek1543

+1

@ piotrek1543 Я ценю ваши усилия, но извините - вы действительно не помогаете вообще :) Пожалуйста прочитайте мой вопрос еще раз - я обернул CoordinatorLayout в LinearLayout, и мой edittext прикреплен так, как я хочу. Но тогда клавиатура не прокручивает RecyclerView – Anton

+1

Что касается вашей проблемы с координатором, андроид: isScrollContainer = "true" исправляет это, имя несколько вводит в заблуждение, но комментарии являются ключом: установите это, если представление будет служить прокруткой контейнер, что означает, что его можно изменить, чтобы уменьшить его общее окно, чтобы было место для метода ввода. Если не установлено, значение по умолчанию будет истинным, если «полоса прокрутки» имеет вертикальную полосу прокрутки, иначе она будет ложной. –

ответ

9

Добавить это в вашем EditText, мой друг, так же, как в floatingActionButton

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

Но EditText лежит выше просмотра ресайклера в этом случае –

+0

это сработало для меня ... thanks eric –

Смежные вопросы