我正在创建一个<code>RecyclerView</code>,其中当您向上滚动<code>RecyclerView>时,标题会折叠。我可以通过下面的布局实现这一点,使用透明的AppBarLayout
和MyCoolView
,这是标题。视差效果很好。
但是,如果标头仍然可见,并且我抛出Recy首脑视图
,RV会慢慢滚动到顶部,并且一些项目在工具栏下,直到RV到达视图的顶部。我一直在玩scrollFlages
,但没有达到理想的结果。关于如何改善抛出体验以使项目不被剪切的任何建议?
观看视频并观看其投掷时--- 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>
将回收器视图包装在 FrameLayout 中可以解决此问题。
您还需要将appbar_scrolling_view_behavior从RecyclerView移动到FrameLayout,以便将其正确定位在AppBarLayout下方。
<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>
<!-- BEGIN SOLUTION -->
<!-- the layout behavior needs to be set on the FrameLayout, not the RecyclerView -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<!--This RecyclerView MUST be wrapped in a FrameLayout-->
<!--This prevents the RecyclerView from going behind the AppBarLayout-->
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
<!-- END SOLUTION -->
</android.support.design.widget.CoordinatorLayout>
也许你可以像这样将layout_behavior=“@string/appbar_scrolling_view_behavior”添加到你的RecylerView中。
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" />
可能的解决方案(未经测试)。将< code > OnOffsetChangedListener 添加到您的< code>AppBarLayout中,并记下偏移值。首先,声明这个字段:
private boolean shouldScroll = false;
然后,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;
}
});
现在,向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);
}
}
});
但这可能需要一些调整。我看到两个问题:
偏移量!=0
,而不是offset==appBarLayout.getTotalScrollRange()
。我想当我试图滚动它触摸AppBarLayout部分时,滚动折叠AppBar有问题。而且有时滚动不流畅。 这是一个短视频(1米30秒)的问题:https://www.youtube.com/watch?v=n32N9Z4S3SA 这是指向简单项目的链接(仅在 github 上出现此问题):https://github.com/yozhik/Reviews/tree/master/app/src/main
我想实现像Google Play App一样的平滑滚动行为。我尝试过这里提到的解决方案: 解决方案1 解决方案2 解决方案3 但所有上述解决方案都没有像在Google Play应用程序中那样给出预期的结果。以下是xml代码: 如何实现平滑滚动? 编辑:以下是recyclerview适配器 }
我正在使用AppBarLayout和CollasingToolBarLayout的新CoordinatorLayout。在AppBarLayout下面,我有一个包含内容列表的RecyclerView。 我已经验证了当我在列表上下滚动时,fling scrolling可以在RecyclerView上工作。不过,我也希望AppBarLayout在扩展期间能够平滑滚动。 当向上滚动以展开CollaSpi
我正在开发一个Android应用程序,其中我使用、和来使用折叠工具栏功能。 我在布局中使用在相同的布局中展开和折叠。当我试图从屏幕中心向上滚动时,它不起作用,但当我试图从屏幕右角向上滚动屏幕时,它会平滑滚动。 下面提到的是我的 xml 文件 layout.xml 理想的结果是,当我尝试从屏幕中心向上滚动时,它应该像我从手机右角向上滚动一样工作。 请观看下面提到的视频,以便更清楚地了解问题 http
当RecycerView有足够的内容可以滚动时,页面看起来很好。但是,当RecycerView为空或没有足够的内容可滚动时,行为是的AppBarLayout子级将继续滚动-这看起来很奇怪。 当NestedScrollView为空时,有没有办法停止AppBarLayout子滚动?
我将CoordinatorLayout与AppBarLayout和CollapsingToolbarLayout一起使用。还有一个内容的NestedScrollView。当我在CollapsingToolbarLayout上滚动时,当Collapsing工具栏Layout折叠时,滚动停止。我想要的是继续滚动NestedScrollView的内容。当我在NestedScrollView上滚动时,它会