标题清晰。我有这个布局:
_________________
|_______________| <- Toolbar
|___|___|___|___| <- Tablayout
| |
| |
| ViewPager |
| |
|_______________|
工具栏和 tablayout 都在 AppBarLayout
中,因此我可以使用滚动标志在向顶部滚动时隐藏工具栏。问题是这只适用于嵌套滚动支持的 View 。大多数选项卡 - 我的意思是,大多数页面 - 都是 support.v4.NestedScrollView
,所以没关系;其他是(并且需要是)ListView
。
从 Lollipop 开始,我只需将 android:nestedScrollingEnabled="true"
添加到 ListView ,工具栏就会在滚动时正确隐藏。
不过,在 API<21 上,没有这样的属性,工具栏也不会隐藏。更重要的是,列表中的最后一项被隐藏了,因为 CoordinatorLayout
中的一些测量错误:listview 就像它具有当前被工具栏占用的空间一样。
解决方案:
切换到
RecyclerView
,它支持嵌套滚动:我不能,因为我需要使用仅适用于适配器 View 的外部库适配器,而我不能替换(即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
。我得到了一个小高度的小 View ,页面的其余部分是空的。
最佳答案
不幸的是,没有办法让嵌套滚动在 ListView
上工作 - 否则它不需要在 API 21 中完成的修改。
您会注意到当前的 Parse SDK实际上已经完全删除了 ParseQueryAdapter
。鉴于此,使用 Parse query APIs directly 开始构建您自己的基于 RecyclerView
的适配器可能是有意义的.
关于android - API<21 上的 ListView 嵌套滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32811121/