gpt4 book ai didi

android - 更改每个项目的 RecyclerView.ItemDecoration 颜色

转载 作者:搜寻专家 更新时间:2023-11-01 08:27:59 26 4
gpt4 key购买 nike

我正在为我的 recyclerview 使用自定义项目装饰器,它工作正常。

MyItemDecorationTest.java

public class MyItemDecorationTest extends RecyclerView.ItemDecoration{

private Paint paint;
private final static int OFFSET = 8;

public MyItemDecorationTest(Paint paint){
this.paint = paint;
}

@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
outRect.set(OFFSET, OFFSET, OFFSET, OFFSET);
}

@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDraw(c, parent, state);

final RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();

for(int i=0; i<parent.getChildCount(); i++){
final View child = parent.getChildAt(i);
c.drawRoundRect(layoutManager.getDecoratedLeft(child) + OFFSET,
layoutManager.getDecoratedTop(child) + OFFSET,
layoutManager.getDecoratedRight(child) - OFFSET,
layoutManager.getDecoratedBottom(child) - OFFSET, 2, 2, paint);
}
}
}

这就是我将它包含在我的 Activity 中的方式:

RecyclerView.ItemDecoration itemDecoration = new MyItemDecorationTest(getPaint(getResources().getColor(R.color.block_blue)));
recyclerView.addItemDecoration(itemDecoration);

这是我设置绘画的方法。

public Paint getPaint(int color){
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(color);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);

return paint;
}

这是渲染图:

item decoration example

现在我想更改每个项目的装饰器颜色。这意味着例如将第二项的蓝色更改为红色。这就是我期望的:

desire state

有什么方法可以使用 RecyclerView.ItemDecoration 在每个项目的基础上更 retrofit 饰颜色?

最佳答案

与其使用 ItemDecoration 来更改项目的颜色,不如考虑直接在布局中绘制边框并在运行时更改布局的颜色。

例如你可以这样做:

corner.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke
android:width="2dp"
android:color="#07AFF2" />

<solid android:color="#ffffff" />

<padding
android:left="1dp"
android:right="1dp"
android:top="1dp" />

<corners android:radius="3dp" />
</shape>

将其添加到您的可绘制文件夹中。您的 layout.xml 文件应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bloc"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/corner">

<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/textView"
android:textColor="@color/colorBlack"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Element" />

</LinearLayout>
</LinearLayout>

关于android - 更改每个项目的 RecyclerView.ItemDecoration 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43033299/

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