CollapsingToolbarLayout在Recyclerview

时间:2017-10-13 17:09:09

标签: android android-recyclerview android-coordinatorlayout android-collapsingtoolbarlayout coordinator-layout

我在CoordinatorLayout和RecyclerView上遇到这个奇怪的问题。

正如您在图片中看到的那样,RecyclerView在其下方留下一个空的空白区域,其中完全相同的高度与为CollapsingToolbarLayout的minHeight属性声明的那样。

如果我没有声明此属性, linear_navigation LinearLayout将不会固定在屏幕顶部(这是所需的行为)。

我错过了什么?这是布局的代码和一些截图。

<android.support.design.widget.CoordinatorLayout 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.support.design.widget.AppBarLayout
        android:id="@+id/appbar_profile"
        android:layout_width="match_parent"
        android:layout_height="@dimen/profile_header_height"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_header"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:minHeight="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:background="@drawable/bg_welcome"
                android:orientation="vertical"
                app:layout_collapseMode="parallax">

                <com.tourwhiz.pro.widgets.TextViewComfortaaBold
                    android:id="@+id/text_username"
                    style="@style/TextViewTW.Title"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="@dimen/view_size_normal"
                    android:gravity="center"
                    android:text="Juancho"
                    android:textSize="@dimen/text_size_medium" />

                <LinearLayout
                    android:id="@+id/linear_settings"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center">

                    <ImageView
                        android:id="@+id/image_settings"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/ic_settings_white" />

                    <de.hdodenhof.circleimageview.CircleImageView
                        android:id="@+id/image_user"
                        android:layout_width="@dimen/profile_image_radious"
                        android:layout_height="@dimen/profile_image_radious"
                        android:layout_margin="@dimen/view_size_normal"
                        android:src="@drawable/madrid_01"
                        app:civ_border_color="@color/karma_aqua_blue"
                        app:civ_border_width="@dimen/view_size_tiny" />

                    <ImageView
                        android:id="@+id/image_edit"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/ic_mode_edit_white" />
                </LinearLayout>
            </LinearLayout>

            <LinearLayout
                android:id="@+id/linear_navigation"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                app:layout_collapseMode="pin"
                android:background="@color/white"
                android:orientation="horizontal">

                <LinearLayout
                    android:id="@+id/linear_posts"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="@dimen/view_size_normal">

                    <com.tourwhiz.pro.widgets.TextViewLatoRegular
                        style="@style/TextViewTW"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="@string/profile_posts_text"
                        android:textSize="@dimen/text_size_large" />

                    <com.tourwhiz.pro.widgets.TextViewLatoRegular
                        android:id="@+id/text_posts_count"
                        style="@style/TextViewTW"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:textSize="@dimen/text_size_large"
                        tools:text="1456" />

                </LinearLayout>

                <View
                    android:layout_width="@dimen/separator_height"
                    android:layout_height="match_parent"
                    android:layout_marginBottom="@dimen/text_size_normal"
                    android:layout_marginTop="@dimen/text_size_normal"
                    android:background="@color/dark_grey" />

                <LinearLayout
                    android:id="@+id/linear_friends"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="@dimen/view_size_normal">

                    <com.tourwhiz.pro.widgets.TextViewLatoRegular
                        style="@style/TextViewTW"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="@string/profile_friends_text"
                        android:textSize="@dimen/text_size_large" />

                    <com.tourwhiz.pro.widgets.TextViewLatoRegular
                        android:id="@+id/text_friends_count"
                        style="@style/TextViewTW"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:textSize="@dimen/text_size_large"
                        tools:text="1" />

                </LinearLayout>

                <View
                    android:layout_width="@dimen/separator_height"
                    android:layout_height="match_parent"
                    android:layout_marginBottom="@dimen/text_size_normal"
                    android:layout_marginTop="@dimen/text_size_normal"
                    android:background="@color/dark_grey" />

                <LinearLayout
                    android:id="@+id/linear_reviews"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="@dimen/view_size_normal">

                    <com.tourwhiz.pro.widgets.TextViewLatoRegular
                        style="@style/TextViewTW"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="@string/profile_reviews_text"
                        android:textSize="@dimen/text_size_large" />

                    <com.tourwhiz.pro.widgets.TextViewLatoRegular
                        android:id="@+id/text_reviews_count"
                        style="@style/TextViewTW"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:textSize="@dimen/text_size_large"
                        tools:text="12" />

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

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_posts"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="bottom"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:listitem="@layout/item_post" />


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

The blank bottom space is the problem

3 个答案:

答案 0 :(得分:1)

因为您在android:layout_gravity="bottom"中设置了RecyclerView

删除android:layout_gravity="bottom

答案 1 :(得分:1)

@KeLiuYue 在回答中建议的修复可能有效。

另外(如果上述修复失败)在许多情况下使用设计库会出现问题。因此,可能存在此修复可能无效的情况,因为其设计小于屏幕高度导致白色空间,崩溃或展开<CollapsingToolbarLayout>时的一些神秘行为。这个库仍然存在漏洞,希望有一天可能会修复故障。

答案 2 :(得分:1)

最后,我找到了适合我情况的解决方法。我不确切知道它为什么会起作用,但确实如此。如果有人知道为什么这有效,甚至更好,为什么会这样,请回答这个问题,我很乐意接受正确答案。

解决方法是在RecyclerView下面放置一个空的视图。它对我有用!

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

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_posts"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="bottom"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:listitem="@layout/item_post" />


</android.support.design.widget.CoordinatorLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone" />
</android.support.design.widget.CoordinatorLayout>