我正在寻找带有 CardView
的 RecyclerView
,其中每个 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));
}
关于java - 我可以将 RecyclerView 设置为在列表中向下移动时颜色逐渐变化的按钮吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57122029/