Android按钮使用相同的Drawable来定义形状,但使用不同的颜色。

4
在我的应用程序中,我使用了很多按钮。所有按钮的形状必须相同,但颜色不同。我为每个按钮编写了drawable,具有相同的属性,但不同的实心android:color。这使得我的应用程序中有20多个可绘制的xml。如何在所有按钮上使用相同的drawable,但应该能够设置不同的背景颜色?我尝试了以下方法,但没有成功。
1.在attrs.xml中
2.在drawable文件夹中创建buttonshape.xml以获取矩形形状
3.在styles.xml中
@drawable/buttonshape @color/mycolor
4.在Colors.xml中
#000000
最后,在我的activity xml中,为按钮设置主题。
<Button android:id="@+id/btnTest" 
android:theme="@style/TestTheme"   android:text="Test" /> 

这对我没有用。你们中的任何人都能帮助我解决这个问题吗?我是安卓开发的新手。我无法弄清楚我错在哪里。非常感谢任何帮助。 谢谢, 罗杰


在运行时获取此可绘制背景并更改背景颜色。 - Akshay Paliwal
1个回答

4

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

无论您想在哪个视图上设置不同的颜色,只需使用此代码。

.getCurrent会返回所选的绘制图层列表

使用此代码,它不会抛出java.lang.ClassCastException:android.graphics.drawable.GradientDrawable不能强制转换为android.graphics.drawable.ShapeDrawable异常。

它对我完美地起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接