Android 按钮使用相同的 Drawable 形状但使用不同的颜色

Posted

技术标签:

【中文标题】Android 按钮使用相同的 Drawable 形状但使用不同的颜色【英文标题】:Android buttons use same Drawable for shape but use different colors 【发布时间】:2015-05-06 17:47:15 【问题描述】:

在我的应用程序中,我使用了很多按钮。并且所有按钮的形状必须相同但颜色不同。我为每个具有相同功能但不同的实体 android:color 的按钮编写了可绘制对象。这让更多 我的应用程序中有超过 20 个可绘制的 xml。 如何对所有按钮使用相同的可绘制对象,但应该能够 设置不同的背景颜色。 我尝试如下,但没有奏效。 1. 在 attrs.xml

    在drawable文件夹中为矩形创建buttonshape.xml

    在styles.xml 中 @drawable/按钮形状 @color/mycolor

    在 Colors.xml 中 #000000

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

<Button android:id="@+id/btnTest" 
android:theme="@style/TestTheme"   android:text="Test" /> 

这对我不起作用。你们中的任何人都可以帮我解决这个问题吗?我是android开发的新手。我无法弄清楚我哪里出错了。任何帮助将非常感激。 谢谢, 罗杰

【问题讨论】:

在运行时获取此可绘制背景并更改背景颜色。 【参考方案1】:

使用这个: GradientDrawable bgShape = (GradientDrawable)view.getBackground().getCurrent(); bgShape.setColor(Color.BLACK);

如果您想为任何视图设置不同的颜色,只需使用此代码。

.getCurrent 给出选定的可绘制图层列表

使用它不会抛出 java.lang.ClassCastException: android.graphics.drawable.GradientDrawable cannot be cast to android.graphics.drawable.ShapeDrawable 异常。

它非常适合我。

【讨论】:

以上是关于Android 按钮使用相同的 Drawable 形状但使用不同的颜色的主要内容,如果未能解决你的问题,请参考以下文章

将颜色过滤器添加到 Drawable 会更改使用相同 Drawable 的所有 Button

Android按钮选择并按下drawable

在android中将drawable设置为浮动操作按钮ImageView

我可以使用相同的“radioButton_states”drawable并创建一个每个按钮具有不同背景颜色的radioGroup吗?

Android点击按钮后改变颜色

android:thumb="@drawable/seeker"啥意思