首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在android RecyclerView中同时设置两项颜色

在Android RecyclerView中同时设置两项颜色,可以通过创建自定义的ItemDecoration来实现。ItemDecoration可以用于在RecyclerView的item之间绘制分隔线、边距等效果。

下面是一个示例代码,演示如何在RecyclerView中同时设置两项颜色:

首先,创建一个自定义的ItemDecoration类,命名为DualColorItemDecoration。在该类中,我们可以重写getItemOffsets()方法来设置各个item的偏移量,并在onDraw()方法中绘制颜色。

代码语言:txt
复制
public class DualColorItemDecoration extends RecyclerView.ItemDecoration {
    private int color1;
    private int color2;

    public DualColorItemDecoration(int color1, int color2) {
        this.color1 = color1;
        this.color2 = color2;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        int position = parent.getChildAdapterPosition(view);

        // 设置偶数位置的item左侧为color1,奇数位置的item左侧为color2
        if (position % 2 == 0) {
            outRect.left = 0;
        } else {
            outRect.left = parent.getContext().getResources().getDimensionPixelSize(R.dimen.divider_height);
        }
    }

    @Override
    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
        int childCount = parent.getChildCount();
        int left, right, top, bottom;

        for (int i = 0; i < childCount; i++) {
            View child = parent.getChildAt(i);
            RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();

            // 根据位置绘制不同颜色的矩形
            if (i % 2 == 0) {
                left = child.getLeft() - params.leftMargin;
                right = child.getLeft() + parent.getContext().getResources().getDimensionPixelSize(R.dimen.divider_height);
                top = child.getTop() - params.topMargin;
                bottom = child.getBottom() + params.bottomMargin;
                c.drawRect(left, top, right, bottom, new Paint(Paint.ANTI_ALIAS_FLAG) {
                    {
                        setColor(color1);
                        setStyle(Paint.Style.FILL);
                    }
                });
            } else {
                left = child.getLeft() - params.leftMargin;
                right = child.getLeft() + parent.getContext().getResources().getDimensionPixelSize(R.dimen.divider_height);
                top = child.getTop() - params.topMargin;
                bottom = child.getBottom() + params.bottomMargin;
                c.drawRect(left, top, right, bottom, new Paint(Paint.ANTI_ALIAS_FLAG) {
                    {
                        setColor(color2);
                        setStyle(Paint.Style.FILL);
                    }
                });
            }
        }
    }
}

在RecyclerView的Adapter中,使用DualColorItemDecoration类的实例作为RecyclerView的addItemDecoration()方法的参数,即可实现在RecyclerView中同时设置两项颜色。

代码语言:txt
复制
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);

// 设置颜色,此处以蓝色和红色为例
int color1 = ContextCompat.getColor(this, R.color.blue);
int color2 = ContextCompat.getColor(this, R.color.red);

// 创建自定义的ItemDecoration并添加到RecyclerView中
DualColorItemDecoration itemDecoration = new DualColorItemDecoration(color1, color2);
recyclerView.addItemDecoration(itemDecoration);

以上代码中,需要在res/values/colors.xml文件中定义蓝色和红色的颜色值:

代码语言:txt
复制
<resources>
    <color name="blue">#2196F3</color>
    <color name="red">#F44336</color>
</resources>

通过以上步骤,就可以在Android RecyclerView中同时设置两项颜色了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AndroidTextView文字设置不同的颜色

项目的过程中会遇到一行文字,部分功能需要不同的文字颜色来展示,下面介绍两种方式实现: 效果图: [wqs2rn595h.png] 这里写图片描述 方式一: 用SpannableStringBuilder...setSpan方法有四个参数,ForegroundColorSpan是为文本设置前景色,也就是文字颜色。如果要为文字添加背景颜色,可替换为BackgroundColorSpan。...0为文本颜色改变的起始位置,5为文本颜色改变的结束位置。最后一个参数为布尔型,可以传入以下四种。...Spanned.SPAN_INCLUSIVE_EXCLUSIVE 从起始下标到终了下标,包括起始下标 Spanned.SPAN_INCLUSIVE_INCLUSIVE 从起始下标到终了下标,同时包括起始下标和终了下标...color='#4d8ade'>冷云他大叔:啊哈哈哈或"; tv.setTextSize(15); tv.setText(Html.fromHtml(str)); ---- 小编整理了一份Android

9.7K20

seaborn设置和选择颜色梯度

seabornmatplotlib的基础上进行开发,当然也继承了matplotlib的颜色梯度设置, 同时也自定义了一系列独特的颜色梯度。...seaborn,通过color_palette函数来设置颜色, 用法如下 >>> sns.color_palette() [(0.12156862745098039, 0.4666666666666667...该函数接受多种形式的参数 1. seaborn palette name seaborn,提供了以下6种颜色梯度 1. deep 2. muted 3. bright 4. pastel 5. drak...4. cubehelix palette 通过子函数cubehelix_palette来实现,创建一个亮度线性变化的颜色梯度,color_palette,通过前缀ch:来标识对应的参数,用法如下 >...seaborn,还提供了4种独特的渐变色,用于绘制热图 1. rocket 2. flare 3. mako 4. crest rocker是默认的颜色梯度 >>> sns.heatmap(data

3.6K10
  • AndroidTextview文字设置不同颜色、下划线、加粗、超链接

    项目中会遇到一行文字,部分需要不同的文字颜色、下划线以及超链接来展示,下面介绍两种方式实现: 1、SpannableString来实现 1)简介 对于给Textview设置不同颜色,就不得不提SpannableString...,当然给textview设置不同的字体颜色也可以通过加HTML标签来实现,但是有SpannableString的存在,为啥不用呢....注意:如果这些额外信息能被所用的方式支持,比如将SpannableString传给TextView;也有对这些额外信息不支持的,比如自定义viewCanvas绘制 文字,对于不支持的情况,SpannableString...static Spanned fromHtml(String source) 从Html字符串返回可显示的样式文本。...设置不用颜色如下 TextView mTextView=(TextView)findViewById(R.id.tv); String str="只会玩战士

    4.7K21

    Android布局】程序设置android gravity 和 android layout Gravity属性

    你可以设置该text 相对于view的靠左,靠右等位置. android:layout_gravity是用来设置该view相对与父view 的位置.比如一个button linearlayout里,你想把该...即android:gravity用于设置View内容相对于View组件的对齐方式,而android:layout_gravity用于设置View组件相对于Container的对齐方式。...原理跟android:paddingLeft、android:layout_marginLeft有点类似。如果在按钮上同时设置这两个属性。...下面回到正题, 我们可以通过设置android:gravity=”center”来让EditText的文字EditText组件居中显示;同时我们设置EditText的android:layout_gravity...=”right”来让EditText组件LinearLayout居右显示。

    2.4K10

    SwipeRefreshLayout下拉刷新组件

    实际开发,经常都会遇到下拉刷新、上拉加载更多的情形,这一期就一起来学习Android系统的SwipeRefreshLayout下拉刷新组件。...setColorSchemeResources(int... colorResIds):设置下拉进度条的颜色主题,参数为可变参数,并且是资源id,可以设置多种不同的颜色,每转一圈就显示一种颜色。...然后代码里设置OnRefreshListener设置监听,最后监听里设置刷新时的数据获取就可以了。...,然后给SwipeRefreshLayout添加一个下拉的Listener,onRefresh()回调方法来改变文本框里面的内容。...(new DefaultItemAnimator()); // 设置颜色属性的时候一定要注意是引用了资源文件还是直接设置16进制的颜色,都是int值容易搞混 // 设置下拉进度的背景颜色

    3.3K70

    Material Design 实战 之第五弹 —— 下拉刷新(SwipeRefreshLayout)

    : 3.1 实例化SwipeRefreshLayout; 3.2 调用setcolorSchemeResources()方法来设置下拉刷新进度条的颜色;...,然后 runOnUiThread() 的 run() 获取到数据, 并adapter.notifyDataSetChanged()调用刷新数据; 最后调用swipeRefreshLayout...> 这里RecyclerView的外面再嵌套一层SwipeRefreshLayout,让RecyclerView实现下拉刷新功能...} }).start(); } 这里, 首先实例化SwipeRefreshLayout, 然后调用setcolorSchemeResources()方法来设置下拉刷新进度条的颜色...重新运行一下程序,屏幕的主界面向下拖动,会出现下拉刷新的进度条,松手后就会自动进行刷新了,效果如图: ? 刷新 ? 刷新后 下拉刷新进度条会停留两秒钟,随后自动消失,水果列表也会更新了。

    1K50

    Android RecyclerView顶部刷新实现详解

    Android RecyclerView顶部刷新实现详解 1. RecyclerView顶部刷新的原理 RecyclerView顶部刷新的实现通常都是RecyclerView外部再包裹一层布局。...它继承自ViewGroup,它的内部包含了一个CircleImageView对象作为顶部刷新View,同时它实现了上述步骤3的全部功能。...除此之外,SwipeRefreshLayout还提供了一些方法用来设置顶部刷新View进度条颜色,背景色等。...RecyclerView同时支持顶部刷新和底部刷新 实际的应用,顶部刷新通常都需要和底部刷新一起使用。...要让RecyclerView同时支持顶部刷新和底部刷新,只需要将上述顶部刷新实现RecyclerView换成上一篇文章XRecyclerView即可。 XML布局如下。

    1.1K20

    SwipeRefreshLayout+RecyclerView实现上拉刷新和下拉刷新功能

    SwipeRefreshLayout 是谷歌公司推出的用于下拉刷新的控件,SwipeRefreshLayout已经被放到了sdkVersion 19.1之后SwipeRefreshLayout被放到...Activity引用这个布局并初始化 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate...,当用户下拉的时候会去执行回调 2、setColorSchemeColors(int… colors) 设置 进度条的颜色变化,最多可以设置4种颜色 3、setProgressViewOffset(...当前是否处于刷新状态,一般是在请求数据的时候设置为true,在数据被加载到View后,设置为false。...我们Adapter实现: public class SampleAdapter extends RecyclerView.Adapter<ViewHolder { private List<Integer

    93530

    Android开发笔记(一百二十三)下拉刷新布局SwipeRefreshLayout

    下面是SwipeRefreshLayout的常用方法说明: setColorScheme : 设置进度条/圆圈的颜色。...(该方法新版已被废弃) setOnRefreshListener : 设置刷新监听器。在下拉松开时触发该监听器,需要重写该监听器的onRefresh方法。...下面是新版增加的方法说明: setColorSchemeColors : 设置进度圆圈的圆环颜色。...setProgressBackgroundColorSchemeColor : 设置进度圆圈的背景颜色。 setProgressViewOffset : 设置进度圆圈的偏移量。...首先要注意:布局文件android.support.v4.widget.SwipeRefreshLayout下面只能有一个直接子视图,如果有多个子视图,那么将只展示第一个子视图,后面的子视图将不予展示

    1.7K30

    RecyclerView 梳理:点击&长按事件、分割线、拖曳排序、滑动删除

    当然你还可以通过给 item 的最外层布局设置一个 margin 值,甚至你还可以专门 item 布局的适当地方添加一个高度/宽度为 1 的带背景的 View 作为 divider,这两种方法呢,确实有效果...ItemTouchHelper 会在拖拽的时候回调 Callback 相应的方法,我们只需 Callback 实现自己的逻辑。...如果设置了相关的 dragFlags,那么当长按 item 的时候就会进入拖拽并在拖拽过程不断回调 onMove() 方法,我们就在这个方法里获取当前拖拽的 item 和已经被拖拽到所处位置的 item...= ItemTouchHelper.ACTION_STATE_IDLE) { //给被拖曳的 item 设置一个深颜色背景 viewHolder.itemView.setBackgroundColor...//这里我们设置颜色尽量和你 item xml 设置颜色保持一致 viewHolder.itemView.setBackgroundColor(Color.WHITE); } 这样就能完全达到上面图片的效果了

    3K30

    Android5.0新特性-Material Design

    android:style/Theme.Material.Ligh (ligth version) @android:style/Theme.Material.Ligh.DarkActionBar 同时...Android5.x提出了Color Palette (颜色调色板)的概念,让开发者可以自己设定系统区域的颜色,使整个APP的颜色风格和系统的颜色风格保持一致。...影响视图阴影的因素 以往的Android View通常有2个属性——X和Y,而在Android5.X,Google为其增加了一个新的属性 —Z,对应垂直方向上的高度变化。...Android5.x,View的Z值由 elevation + translationZ(这两个都是5.x引入的新特性)组成。...Z = elevation + translationZ 通过布局文件和Java代码设置视图的阴影 通过布局文件设置 xml设置View的视图高度 android:elevation="Xxdp"

    57820

    Material Design Android 的应用

    分享时能将每个知识点都有个透彻而又完整的分析,不要追求速度。实话说这次分享确实给我带了不少的收获,相信在下次分享能够有一个满意的表现。...那接下来就主要介绍一下Material DesingAndroid应用。。 跟随着15年Android 5.0的问世,谷歌设计师们还给我们带来的一系列的具有Material Design风格控件。...窗口背景颜色 navigationBarColor 导航栏颜色 通过styles配置颜色来定制您的主题,并在AndroidManifest应用。...="@android:color/white" app:menu="@menu/bottom_menu"/> 代码设置点击事件 navigation!!....Toolbar作为早期AndroidActionBar的替代品,定制性和操作性挺高了不少。使用的时候需要设置NoActionBar的主题。

    1.2K20

    Android的ListView和RecyclerView的基本用法

    Android5.0版本之后,Android官方推出了一个新的控件:RecyclerView ,完全解耦的设计使得RecyclerView比起ListView灵活了太多,应用的场合也非常广泛。...我们实际使用的时候可以根据我们自己的需求来设置ListView控件的item布局文件和ListView的点击事件处理。...Activity来显示RecyclerView,笔者这里选择的是新建一个Activity来显示RecyclerView: 因为RecyclerViewandroid5.0版本新增support.v7...库,并不是SDK,所以我们要进行依赖声明:app的build.gradle文件中加入以下代码: compile 'com.android.support:recyclerview-v7:25.1.1...显示屏幕的子项设置对应的数据信息 */ @Override public void onBindViewHolder(MyViewHolder myViewHolder,

    1.1K50
    领券