gpt4 book ai didi

android - Android中项目下的RecyclerView Header

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:40:48 27 4
gpt4 key购买 nike

我找不到针对此类行为的解决方案:

LinkedIn Pulse

就是RecyclerView的header有点在items下面。当然我猜是RecyclerView。

我怎样才能做到这一点?

编辑

我所做的只是为回收站 View 添加装饰。

这是我的简单装饰器:

public class HeaderItemDeceration extends RecyclerView.ItemDecoration {

public HeaderItemDeceration() {
}

@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (parent.getChildAdapterPosition(view) == 0) {
outRect.bottom = -100;
}
}
}

它工作但问题是这个标题消失得太快了,我的意思是下一个项目在顶部,它下面有标题,并且立即消失,因为通常它应该在下一个项目打开时隐藏顶部。

编辑 2

我还没有解释所有内容,所以我在这里解释一下。

在我的例子中,我不想有 ActionBar。我想要的只是上面示例中 RecyclerView 下的图像,但没有折叠工具栏。假设我的 Activity 具有父级为 Theme.AppCompat.Light.NoActionBar 的样式。

考虑到我在下面的解释和答案,我试图通过这种布局达到目标:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:fitsSystemWindows="true">

<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed">

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="fitXY"
android:src="@drawable/header"/>

</android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view_items"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:behavior_overlapTop="24dp"/>

</android.support.design.widget.CoordinatorLayout>

它几乎可以正常工作。几乎是因为我注意到了不需要的效果,即当我滚动到顶部时,有时我必须重复滚动手势才能到达顶部。我记录了它:

Bad effect recorded

我假设使用 CollapsingToolbarLayout 的目标可能是错误的。

最佳答案

我在为 Scotts 的草坪护理应用程序编写主屏幕时实现了这种效果。 Here is an image of how it looks.

这是通过使用 CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout 和 RecyclerView 来实现的。关键是 ScrollView 行为,您需要在 RecyclerView 上同时设置 app:behavior_overlapTopapp:layout_behavior="@string/appbar_scrolling_view_behavior" 属性(只有在AppBarLayout 的兄弟 View )。

在我的场景中,我将 header 与 RecyclerView 完全分开。根据您的内容管理方式,此解决方案可能不适合您(尽管将 header 保留在 RV 之外对我来说要简单得多——管理的 View 类型/ View 持有者少了一个!)

要点最终看起来像这样:

<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
>
<android.support.design.widget.AppBarLayout
android:layout_height="300dp" // fixed height of your header container
android:layout_width="match_parent"
android:fitsSystemWindows="true"
>
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap" // snap/exitUntilCollapsed are optional. See more info on scroll flags here: https://developer.android.com/reference/android/support/design/widget/AppBarLayout.LayoutParams.html#setScrollFlags(int)
>
<ImageView // This is where you'd put your header backdrop
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax" // not essential, but most people want the parallax scrolling effect with their image header in this setup. this is how you would do it.
/>
</CollapsingToolbarLayout>
</AppBarLayout>
<RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:behavior_overlapTop="64dp" // This is what you're looking for!
/>
</CoordinatorLayout>

关于android - Android中项目下的RecyclerView Header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36793379/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com