【发布时间】:2021-05-01 08:12:18
【问题描述】:
我的应用程序中有一个 imageView,它显示一些像这样的背景图像:
我想像这样在它上面添加一些彩色覆盖(蓝色覆盖):
我用来执行此操作的代码是:
Picasso.with( context ).load( R.drawable.ic_nocover ).resize( targetWidth, targetHeight ).into( iv, new Callback() {
@Override
public void onSuccess() {
tv.setText( title );
iv.setBackgroundResource( R.drawable.ic_nocover );
iv.setColorFilter(getRandomMaterialColor( context, "500" ), PorterDuff.Mode.SRC_ATOP);
}
@Override
public void onError() {
tv.setText( title );
iv.setBackgroundResource( R.drawable.ic_nocover );
iv.setColorFilter(getRandomMaterialColor( context, "500" ), PorterDuff.Mode.SRC_ATOP);
}
} );
getRandomMaterialColor( context, "500" ) 是我创建的用于选择随机颜色的方法。
但我得到的结果只是没有任何覆盖的图像。
没有什么原因?
我的 XML 如下所示:
<androidx.cardview.widget.CardView
android:id="@+id/imagecard"
android:layout_width="110dp"
android:layout_height="188dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
app:cardCornerRadius="10dp">
<ImageView
android:id="@+id/iv_BookCover"
android:layout_width="110dp"
android:layout_height="140dp"
android:scaleType="fitXY" />
<TextView
android:id="@+id/tv_BookCover"
android:layout_width="110dp"
android:layout_height="140dp"
android:fontFamily="@font/assistant_semibold"
android:gravity="top|center"
android:inputType="textMultiLine"
android:paddingStart="4dp"
android:paddingTop="20dp"
android:paddingEnd="4dp"
android:paddingBottom="20dp"
android:scaleType="fitXY"
android:textColor="@color/colorBlackText"
android:textSize="18sp" />
</androidx.cardview.widget.CardView>
我试图不对 XML 进行任何更改并以编程方式进行。
谢谢
【问题讨论】:
标签: java android imageview overlay porter-duff