[英]Android set colors in layer-list programmatically
我有这个可绘制的:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/circle">
<shape android:shape="oval">
<size android:width="120dp" android:height="120dp"></size>
<stroke android:width="4dp"/>
</shape>
</item>
<item
android:id="@+id/person"
android:top="16dp"
android:bottom="16dp"
android:left="16dp"
android:right="16dp">
<bitmap android:src="@drawable/ic_person_48dp" />
</item>
</layer-list>
我将此设置为回收者视图中的项目:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="10dp"
android:clickable="true"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/person_icon"/>
</LinearLayout>
我想为bind方法中的每个单元格设置不同的颜色:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ImageView imageView = holder.personImageView;
// How do I grab the circle shape and person bitmap from the image view
// and set the colors for this cell?
}
我需要这个才能从api 17及更高版本开始工作。
尝试这个:
final LayerDrawable layerDrawable = holder.personImageView.getDrawable().mutate();
layerDrawable.getDrawable(index).mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN);
您必须调用drawable的mutate()
方法,否则颜色将随着LayerDrawable的每次迭代而改变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.