Android按钮使用相同的可绘制形状,但使用不同的颜色

Android按钮使用相同的可绘制形状,但使用不同的颜色,android,button,colors,drawable,reusability,Android,Button,Colors,Drawable,Reusability,在我的应用程序中,我使用了很多按钮。所有按钮的形状必须相同,但颜色不同。我为每个按钮编写了drawable,具有相同的功能,但不同的纯色android:color。这使得更多 我的应用程序中有超过20个可绘制的xml。 如何对所有按钮使用相同的drawable,但应能够 设置不同的背景色。 我尝试了以下方法,但没有成功。 1.在attrs.xml中 在可绘制文件夹中为矩形形状创建buttonshape.xml 在styles.xml中 @可拉伸/纽扣形状 @颜色/霉色 在Colors

在我的应用程序中,我使用了很多按钮。所有按钮的形状必须相同,但颜色不同。我为每个按钮编写了drawable,具有相同的功能,但不同的纯色android:color。这使得更多 我的应用程序中有超过20个可绘制的xml。 如何对所有按钮使用相同的drawable,但应能够 设置不同的背景色。 我尝试了以下方法,但没有成功。
1.在attrs.xml中

  • 在可绘制文件夹中为矩形形状创建buttonshape.xml


  • 在styles.xml中 @可拉伸/纽扣形状
    @颜色/霉色

  • 在Colors.xml中 #000000
  • 最后,在我的活动xml中,对于按钮,我将主题设置为

    <Button android:id="@+id/btnTest" 
    android:theme="@style/TestTheme"   android:text="Test" /> 
    
    
    
    这对我不起作用。你们谁能帮我解决这个问题?我是android开发的新手。我无法弄清楚我出了什么问题。任何帮助都将不胜感激。 谢谢
    罗杰

    使用以下命令:GradientDrawable bgShape=(GradientDrawable)view.getBackground().getCurrent();bgShape.setColor(Color.BLACK)

    如果您想要设置任何视图的不同颜色,只需使用以下代码

    .getCurrent提供选定的可绘制图层列表

    使用此选项将不会引发java.lang.ClassCastException:android.graphics.drawable.GradientDrawable无法强制转换为android.graphics.drawable.ShapeDrawable异常


    它非常适合我。

    在运行时获取此可绘制背景并更改背景颜色。