3

我在使用 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>

底部空白是问题

4

3 回答 3

0

因为你设置android:layout_gravity="bottom"在你的RecyclerView.

删除android:layout_gravity="bottom.

于 2017-10-13T17:25:58.880 回答
0

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

此外(如果上述修复失败)设计库在许多情况下存在问题。因此,由于设计小于屏幕高度的布局会导致空白,因此可能存在此修复可能无法正常工作的情况,一些神秘的行为在折叠或展开<CollapsingToolbarLayout>。这个库仍然存在一些错误,希望有朝一日该故障可能会得到修复。

于 2017-10-13T17:26:35.670 回答
0

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

解决方法是在 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>
于 2017-11-19T20:31:18.690 回答