使用一种颜色定义drawable:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<corners android:radius="10dip"/>
<solid android:color="#FF7C71BF"/>
并在某些项目的布局中用作:
android:background="@drawable/oval_shape"
如果我想在多个地方使用不同颜色的布局xml重用这个drawable,该怎么做? (可以在代码中重新分配颜色,只是想看看是否可以使用xml完成)。
答案 0 :(得分:2)
这是一个只适用于Lollipop及以后的解决方案:
使颜色变白:
<solid android:color="#FFFFFFFF"/>
然后在视图中使用backgroundTint
和backgroundTintMode
属性:
<View
android:backgroundTint="#FF00FF00"
android:backgroundTintMode="multiply"
....
在这个例子中,它是绿色的。
对于KitKat及更早版本,这些属性不存在,因此您不得不求助于代码:
setColorFilter(Color.GREEN, Mode.MULTIPLY);
答案 1 :(得分:0)
你不能用XML相信我。
在java代码中,只需编写如下:
View v = findViewById(R.id.view_id);
LayerDrawable bg = (LayerDrawable)v.getBackground();
final GradientDrawable shape = (GradientDrawable) bg.findDrawableByLayerId(R.id.drawable_id);
shape.setColor([any color]);