标题很清楚。我有这个布局:
_________________
|_______________| <- Toolbar
|___|___|___|___| <- Tablayout
| |
| |
| ViewPager |
| |
|_______________|
工具栏和 tablayout 都在内部AppBarLayout
,所以我可以使用滚动标志来隐藏工具栏滚动到顶部。问题是这只适用于支持嵌套滚动的视图。大多数标签——我的意思是,大部分页面——都是support.v4.NestedScrollView
s,所以没关系;其他人是(并且需要)ListView
s。
从 Lollipop 开始,我可以简单地添加android:nestedScrollingEnabled="true"
到列表视图中,并且工具栏在滚动时正确隐藏。
但是,在 API<21 上,没有这样的属性,工具栏也不会隐藏。更重要的是,列表中的最后一项是隐藏的,因为存在一些测量错误CoordinatorLayout
:listview 的行为就好像它拥有工具栏当前占用的空间。
解决方案:
切换到
RecyclerView
,它确实支持嵌套滚动:我不能,因为我需要使用仅适用于适配器视图并且我无法替换的外部库适配器(即ParseQueryAdapter
);扩展
ListView
和实现嵌套滚动:看起来很复杂;扩展
ListView
并实施一些解决方法,例如测量内容以避免最后一项问题或(和)使工具栏隐藏的自定义行为:似乎也很复杂;使用一些布局技巧:没有找到。
有什么帮助吗?
例如,我(拼命地)尝试过:
<android.support.v4.widget.NestedScrollView
android:nestedScrollingEnabled="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</android.support.v4.widget.NestedScrollView>
但是这种方式ListView
并没有布置为match_parent
. 我得到一个小高度的小视图,页面的其余部分是空的。