ono*_*ono 6 android android-support-library android-design-library android-coordinatorlayout android-appbarlayout
我正在创建一个RecyclerView带标题,当你向上滚动时标题会崩溃RecyclerView.我可以通过下面的布局非常密切地实现这一点,透明AppBarLayout,MyCoolView这是标题.视差效果很好.
但是,如果标题仍然可见并且我扔了RecyclerView,则RV缓慢滚动到顶部,一些项目在工具栏下,直到RV到达视图的顶部.我一直在玩,scrollFlags但没有取得理想的结果.有关如何改善投掷体验的任何建议,以免物品被剪裁?
观看视频,观看视频时的精彩内容--- https://www.dropbox.com/s/jppd6m7zo41k23z/20160609_151309.mp4?dl=0
<android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.AppBarLayout
android:background="#00000000">
<android.support.design.widget.CollapsingToolbarLayout
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<com.android.myapp.MyCoolView
app:layout_collapseMode="parallax"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView/>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
可能的解决方案(未经测试).添加OnOffsetChangedListener到您的AppBarLayout,并记下偏移值.首先,声明此字段:
private boolean shouldScroll = false;
Run Code Online (Sandbox Code Playgroud)
然后,onCreate:
AppBarLayout appbar = findViewById(...);
appbar.addOnOffsetChangedListener(new OnOffsetChangedListener() {
@Override
void onOffsetChanged(AppBarLayout appbar, int offset) {
// Allow recycler scrolling only if we started collapsing.
this.shouldScroll = offset != 0;
}
});
Run Code Online (Sandbox Code Playgroud)
现在,向RecyclerView添加一个滚动侦听器.每当它尝试滚动时,如果AppBarLayout仍然展开,则还原滚动:
RecyclerView recycler = findViewById(...);
recycler.addOnScrollListener(new OnScrollListener() {
@Override
void onScrolled(RecyclerView recycler, int dx, int dy) {
// If AppBar is fully expanded, revert the scroll.
if (!shouldScroll) {
recycler.scrollTo(0,0);
}
}
});
Run Code Online (Sandbox Code Playgroud)
这可能需要一些调整.我看到两个问题:
offset != 0,而是检查offset == appBarLayout.getTotalScrollRange().我认为.| 归档时间: |
|
| 查看次数: |
3676 次 |
| 最近记录: |