<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorRed"
android:background="@drawable/ic_delete"/>
如上所述,我为ImageView背景添加了一个android VectorAsset。
我可以通过下面的xml将Vector Asset的颜色从红色变为蓝色。
android:backgroundTint="@color/colorBlue"
但我想以编程方式更改其颜色。
我尝试了不同的方法,但没有一种方法
答案 0 :(得分:1)
您可以使用ImageView
而不是AppCompatImageView
,因为API级别21支持setBackgroundTintList
,如果您使用AppCompatImageView
,则可以使用{{}更改色调颜色1}}。
所以改变你的ImageView,
setSupportBackgroundTintList
这样你就可以调用<android.support.v7.widget.AppCompatImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorRed"
android:background="@drawable/ic_delete"/>
来设置这样的色调颜色,
setSupportBackgroundTintList
答案 1 :(得分:0)
首先,背景和src是ImageView的不同属性。
您是否尝试将图像设置为ImageView?首先,您必须使用该属性:
android:src="drawable"
如果您使用的是矢量资产,则需要使用该属性:app:srcCompat="drawable"
要了解背景,backgroundTint属性可以阅读:What is the difference between background, backgroundTint, backgroundTintMode attributes in android layout xml?
并最终以编程方式回答您的背景色调问题,如果这是您真正想要的,那么这里是一个链接How to add button tint programmatically
希望它有所帮助!
答案 2 :(得分:0)
This问题是相关的,但是按钮的答案。
的原始答案您应该使用setBackgroundTintList(ColorStateList list)
按照此link了解如何创建颜色状态列表资源。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:color="#your_color_here" />
</selector>
然后使用
加载它setBackgroundTintList(contextInstance.getResources().getColorStateList(R.color.your_xml_name));
其中contextInstance
是Context
使用AppCompat
btnTag.setSupportButtonTintList(ContextCompat.getColorStateList(Activity.this, R.color.colorPrimary));
答案 3 :(得分:0)
通过编程,您可以这样实现:
img.setColorFilter(getResources().getColor(R.color.white));
答案 4 :(得分:0)
imageView.apply {
setColorFilter(ContextCompat.getColor(context, tintColor), android.graphics.PorterDuff.Mode.MULTIPLY)
backgroundTintList = ContextCompat.getColorStateList(context, bgTintColor)
}