Android 具有多种视图类型的RecyclerView中的视差滚动标题

Android 具有多种视图类型的RecyclerView中的视差滚动标题,android,Android,这个标题很好地解释了我的需要。我有RecyclerView和适配器,有N个视图类型。我尝试了3种不同的第三方库(例如),它们应该支持视差标题视图。它们似乎都不工作,也不需要不适用于我的用例的自定义适配器。也许他们在内部玩视图类型 是否有一些库支持适配器和视差滚动标题中的多种视图类型 谢谢。您可以使用项目装饰为特定项目添加视差背景。这只是一些简单的代码,可以在很多方面进行改进 public class ParallaxHeaderDecoration extends RecyclerView.It

这个标题很好地解释了我的需要。我有
RecyclerView
和适配器,有N个视图类型。我尝试了3种不同的第三方库(例如),它们应该支持视差标题视图。它们似乎都不工作,也不需要不适用于我的用例的自定义适配器。也许他们在内部玩视图类型

是否有一些库支持适配器和视差滚动标题中的多种视图类型


谢谢。

您可以使用项目装饰为特定项目添加视差背景。这只是一些简单的代码,可以在很多方面进行改进

public class ParallaxHeaderDecoration extends RecyclerView.ItemDecoration {

    private Bitmap mImage;

    public ParallaxHeaderDecoration(final Context context, @DrawableRes int resId) {
        mImage = BitmapFactory.decodeResource(context.getResources(), resId);
    }

    @Override
    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
        super.onDraw(c, parent, state);
        for (int i = 0; i < parent.getChildCount(); i++) {
            View view = parent.getChildAt(i);
            if (parent.getChildAdapterPosition(view) == 20) {
                int offset = view.getTop() / 3;
                c.drawBitmap(mImage, new Rect(0, offset, mImage.getWidth(), view.getHeight() + offset),
                        new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()), null);
            }
        }

    }
}
公共类视差HeaderDecoration扩展了RecyclerView.ItemDecoration{
私有位图图像;
公共视差标头Decoration(最终上下文,@DrawableRes int resId){
mImage=BitmapFactory.decodeResource(context.getResources(),resId);
}
@凌驾
公共void onDraw(画布c、RecyclerView父级、RecyclerView.State){
super.onDraw(c、母公司、州);
对于(int i=0;i
使用项目装饰特征,您可以将背景绘制到特定视图或位置


您可以在

好问题中看到一个更复杂的示例-我也对做一些类似于您所问的事情感兴趣。是的,似乎有很多实现,有些可能可以工作,但只有在整个适配器被重写以满足其需要的情况下。您希望标题背景以视差效果滚动吗?如果是这样的话,我会调查物品的装饰。然后你可以画出你认为合适的背景。我在RecyclerView中的标题比其他项目要大得多,我希望它的视差向上滚动得更慢,而不是看不见。所以把它放大。这个例子只是展示了一种方法,而不是一个完整的解决方案:)@Niko你说的不隐形是什么意思?像粘头?对于类似的东西,您将不得不创建自己的布局管理器