Android 可配置背景可绘制

Android 可配置背景可绘制,android,android-layout,android-drawable,Android,Android Layout,Android Drawable,我已经在安卓上工作了一段时间,但是有一个我经常遇到的问题。问题是存在多个视图,其中我为视图指定了可绘制背景的背景,例如: 从上面的示例中可以看出,两个视图的背景可绘制性是相同的,但两个背景可绘制性xml文件的唯一区别是纯色和笔划颜色。有没有其他更好的方法可以做到这一点,我只是创建一个通用的背景绘图,并更改组件的颜色,而不是每次为每个纯色和笔划颜色变化创建一个新的绘图,这在xml中是不可能的。但是,使用Java是可能的 ShapeDrawable shapeDrawable = (ShapeD

我已经在安卓上工作了一段时间,但是有一个我经常遇到的问题。问题是存在多个视图,其中我为视图指定了可绘制背景的背景,例如:


从上面的示例中可以看出,两个视图的背景可绘制性是相同的,但两个背景可绘制性xml文件的唯一区别是纯色和笔划颜色。有没有其他更好的方法可以做到这一点,我只是创建一个通用的背景绘图,并更改组件的颜色,而不是每次为每个纯色和笔划颜色变化创建一个新的绘图,这在xml中是不可能的。但是,使用Java是可能的

ShapeDrawable shapeDrawable = (ShapeDrawable) ContextCompat.getDrawable(getActivity(), R.drawable.name);
shapeDrawable.getPaint().setColor(ContextCompat.getColor(mContext,R.color.colorToSet))

不,这在XML中是不可能的。但是,使用Java是可能的

ShapeDrawable shapeDrawable = (ShapeDrawable) ContextCompat.getDrawable(getActivity(), R.drawable.name);
shapeDrawable.getPaint().setColor(ContextCompat.getColor(mContext,R.color.colorToSet))

您可以在java中引用该drawable并做任何您想做的事情------------------------------------------final GradientDrawable shape=(GradientDrawable)bgDrawable.findDrawableByLayerId(R.id.shape_id);setColor(ContextCompat.getColor(this,R.color.white));使用xml还有其他方法吗?你可以参考java中的可绘制图形,做任何你想做的事------------------------------------------final GradientDrawable shape=(GradientDrawable)bgDrawable.findDrawableByLayerId(R.id.shape_id);setColor(ContextCompat.getColor(this,R.color.white));使用xml还有其他方法吗?