使用设计支持库 22.2.1,具有以下视图层次结构:
<DrawerLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" />
<TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
app:tabGravity="fill"
app:tabMode="scrollable" />
</AppBarLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior">
<!-- Fragments replaced here -->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<CustomDashboardView
android:layout_width="match_parent"
android:layout_height="120dp" />
<ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Tab Fragments go here -->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<CustomEmptyErrorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</ViewPager>
</LinearLayout>
</FrameLayout>
</CoordinatorLayout>
<NavigationView
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:fitsSystemWindows="true" />
</DrawerLayout>
我遇到了这个问题,RecyclerView 的高度大于它应该包含的可见区域,所以看起来 RecyclerView 正在屏幕外绘制,并且不可能将 RecyclerView 中的最后一项滚动到完整视图中。Toolbar 和 TabLayout 也没有任何移动(尽管将 layout_behaviour 应用于 FrameLayout)。
我曾将此报告为一个错误,但 ol' Banesy 表示这是按预期工作的。如果是这种情况,我该如何避免这种预期的行为,而支持 RecyclerView 尊重 layout_height="match_parent" 并在可见屏幕内绘制其项目?https://code.google.com/p/android/issues/detail?id=182391
更新:现在有了 Design Support v23,它看起来一点也不好看。我已将其缩小到设计支持库本身(即更新 RecyclerView、appcompat 等到 v23,同时保留设计支持 v22.2.1 会产生与上述相同的问题)。所以新的外观,CustomDashboardLayout 和 RecyclerView 已经离开了,希望这也没有按预期工作: