【问题标题】:Issue with adding layout at bottom of LinearLayout with Coordinator layout在具有协调器布局的 LinearLayout 底部添加布局的问题
【发布时间】:2016-04-14 18:27:21
【问题描述】:

我正在处理聊天屏幕,并使用 RecyclerView 显示聊天消息。我需要在回收站视图顶部显示一条注释消息,当滚动聊天列表时,该消息将滚出屏幕。这是我正在使用的布局。

<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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:layout_alignParentTop="true"
    android:background="@color/color_toolbar_background"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:contentInsetEnd="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetStart="0dp"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">


    <ImageView
        android:id="@+id/imageViewBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="@dimen/dimen_16dp"
        android:src="@drawable/ic_back_black"/>

    <TextView
        android:id="@+id/textViewTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="Title"
        android:textColor="@color/color_black_text"
        android:textSize="@dimen/dimen_17sp"/>

</android.support.v7.widget.Toolbar>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.design.widget.CoordinatorLayout
            android:layout_width="match_parent"
            android:layout_height="@dimen/dimen_0dp"
            android:layout_weight="1">


            <android.support.design.widget.AppBarLayout
                android:id="@+id/appBarLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/color_white"
                android:elevation="@dimen/dimen_0dp"
                android:visibility="visible"
                app:elevation="@dimen/dimen_0dp"
                tools:visibility="visible">

                <!-- Layout that should scroll off the screen-->
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="#EE9F06"
                    android:orientation="vertical"
                    android:padding="@dimen/dimen_16dp"
                    app:layout_scrollFlags="scroll|enterAlwaysCollapsed">


                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="lorem ipsum dolor set amet lorem ipsum dolor set amet."
                        android:textColor="@color/color_white"
                        android:textSize="@dimen/dimen_12sp"/>
                </LinearLayout>

                <!-- Progress bar to shown while loding previous messages -->
                <include
                    layout="@layout/layout_load_more_progress"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/appBarLayout"
                    android:layout_gravity="center"
                    android:visibility="gone"
                    tools:visibility="visible"/>

            </android.support.design.widget.AppBarLayout>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerViewChat"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:clipToPadding="false"
                android:overScrollMode="never"
                android:scrollbars="none"
                app:layout_behavior="@string/appbar_scrolling_view_behavior"/>


        </android.support.design.widget.CoordinatorLayout>

        <!-- layout for sending message should be at bottom-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_gravity="bottom"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:background="@color/color_toolbar_background"
                android:orientation="horizontal">

                <EditText
                    android:id="@+id/editTextMessage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginBottom="@dimen/dimen_10dp"
                    android:layout_marginLeft="@dimen/dimen_16dp"
                    android:layout_marginTop="@dimen/dimen_10dp"
                    android:layout_weight="1"
                    android:background="@drawable/drawable_chat_send_message_background"
                    android:hint="@string/string_hint_send_message"
                    android:inputType="textMultiLine|textNoSuggestions"
                    android:minHeight="@dimen/dimen_32dp"
                    android:paddingLeft="@dimen/dimen_5dp"
                    android:paddingRight="@dimen/dimen_5dp"
                    android:textColorHint="@color/color_chat_send_message_border"
                    android:textSize="@dimen/dimen_17sp"/>

                <TextView
                    android:id="@+id/textViewSend"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="bottom"
                    android:clickable="true"
                    android:padding="@dimen/dimen_16dp"
                    android:text="@string/string_send"
                    android:textColor="@color/color_accent"
                    android:textSize="@dimen/dimen_17sp"/>
            </LinearLayout>
        </LinearLayout>

    </LinearLayout>

    <!--Progress bar occupying complete screen below Toolbar -->
    <include
        layout="@layout/layout_progress_bar_full_screen"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone"
        tools:visibility="visible"/>
</RelativeLayout></LinearLayout>

我的问题是聊天中的最后一条消息隐藏在发送消息布局后面。我需要滚动回收站视图才能看到最后一条消息。 我正在使用 com.android.support:design:23.2.0。我还为回收站视图设置了 linearLayoutManager.setStackFromEnd(true)。 那么我应该如何避免发送消息布局隐藏最后一条消息?

【问题讨论】:

    标签: android-layout android-recyclerview android-coordinatorlayout androiddesignsupport


    【解决方案1】:

    对于发送消息布局使用

    android:layout_weight="0"

    而不是

    android:layout_alignParentBottom="true"(这在 LinearLayout 父级中无效)

    android:layout_gravity="bottom"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2016-04-21
      • 1970-01-01
      • 2016-04-17
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多