java - 我可以将 RecyclerView 设置为在列表中向下移动时颜色逐渐变化的按钮吗?

标签 java android

我正在寻找带有 CardViewRecyclerView ,其中每个 CardView 都是纯色(从深红色开始)并且然后随着列表的继续,每个 CardView 变得越来越亮(以浅红色/粉红色结束)。列表大小未知,如果仅存在一个单元格,则它只是深红色。我只有起始颜色和结束颜色。

我知道如何将每个单独的按钮仅设置为特定颜色:


public void onBindViewHolder(DetailsRecyclerAdapter.viewHolder holder, int position) { 

        if (position == 0) {
 viewHolder.cardView.setCardBackgroundColor(context.getResources().getColor(R.color.darkRed));
        }

        if (position == (list.size()-1)) {
viewHolder.cardView.setCardBackgroundColor(context.getResources().getColor(R.color.lightRed));
        }
    }

一位好心的评论者要求我添加颜色值:

    <color name="darkRed">#F48B5E</color>
    <color name="lightRed">#E9A191</color>

这只将第一个和最后一个单元格设置为我需要的颜色,有什么办法可以让渐变穿过中间吗?先谢谢大家了!

最佳答案

您可以使用ArgbEvaluator通过起始颜色、结束颜色和计算分数的位置来获得渐变颜色。

将以下方法添加到您的 Adapter 类并使用它来获取背景颜色

// Custom method to generate gradual color

protected int getColorCode(int position){

    int startColor = Color.parseColor("#F48B5E");
    int endColor = Color.parseColor("#E9A191");

    float fraction = position / (float)getItemCount();
    int color = (Integer) new ArgbEvaluator().evaluate(fraction, startColor, endColor);
    return color;
}
public void onBindViewHolder(DetailsRecyclerAdapter.viewHolder holder, int position) {

   // use the above method to set the color
   viewHolder.cardView.setCardBackgroundColor(getColorCode(position));
}

enter image description here

关于java - 我可以将 RecyclerView 设置为在列表中向下移动时颜色逐渐变化的按钮吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57122029/

相关文章:

java - 设备关闭时我应该使用什么 BroadcastReceiver?

java - 导入 3D 模型并将其显示在 swing 组件中

android - 应用程序名称的有效字符

android - 更改 Android 应用程序的 ActionBar 标题颜色

android - 从另一个应用程序调用 Activity

java - 属性文件中的 Spring 和常量类

java - 如何在 Eclipse 中为不同的项目管理不同的 Maven 设置?

java - Do-while 语句 Java

带有包含 Button onClickListener 的 ListView 的 Android AsyncTask

java - Dialog 内的 RecyclerView 底部被截断