在没有工具栏的情况下使用 AppBarLayout 和 CollapsingToolbarLayout

Tom*_*cic 5 android android-coordinatorlayout android-collapsingtoolbarlayout android-appbarlayout

互联网上关于这些新布局的例子并不多,而且那些都基于相同的基本方法的少数例子。如果我的应用程序中没有合适的工具栏,但仍想使用新材料设计布局的酷功能,该怎么办?

我一直在尝试的一件事是在具有视差滚动效果的 CoordinatorLayout 中使用 MapView 和 RecyclerView。它工作得很好,但有一个问题。如果我的适配器数量很少,则 RecyclerView 不会保留在屏幕底部。这里有一些图片可以更好地描述问题。

初始画面:

在此处输入图片说明

RecyclerView 在 MapView 上滚动,下方留有空白: 在此处输入图片说明

有没有办法让 RecyclerView 保持在底部?

我的 xml 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_scrollFlags="scroll|enterAlways">

        <com.google.android.gms.maps.MapView
            android:id="@+id/tts_main_map"
            android:layout_width="match_parent"
            android:layout_height="250dp"
            app:layout_collapseMode="parallax" />
    </android.support.design.widget.CollapsingToolbarLayout>

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

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    />

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

Mob*_*leX 2

尝试根据列表中的项目数动态设置 CollapsingToolbarLayout 的 android:minHeight 属性。即你应该设置(伪代码):

  minHeight = allAvailableHeight - (oneListItemHeigh * listItemCount)
Run Code Online (Sandbox Code Playgroud)

附言。这只是一个想法,我没有尝试过。但我认为它应该有效。