如何动态更改形状颜色?

问题描述 投票:135回答:13

我有

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
    <solid
       android:color="#FFFF00" />
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
</shape>

<TextView
    android:background="@drawable/test"
    android:layout_height="45dp"
    android:layout_width="100dp"
    android:text="Moderate"
/>

因此,现在我希望这种形状根据我从Web服务调用中获得的信息来更改颜色。因此它可能是黄色,绿色或红色,或者其他任何颜色,具体取决于我从网络服务电话收到的颜色。

如何更改形状的颜色?根据这些信息?

android android-layout xamarin.android shape
13个回答
293
投票
您可以像这样简单地对其进行修改

1
投票
我的形状xml:

0
投票
我尝试罗尼的答案,我的应用程序崩溃了。然后,检查我的可绘制xml。看起来像这样:

0
投票

半径


0
投票

drawable_rectangle.xml


59
投票
对我来说,它崩溃了,因为getBackground返回了GradientDrawable而不是ShapeDrawable

41
投票
这对我有用,带有初始xml资源:

10
投票
您可以使用Java建立自己的形状。我为诸如Page Controler之类的iPhone进行了此操作,并用Java绘制形状:

5
投票
LayerDrawable bgDrawable = (LayerDrawable) button.getBackground(); final GradientDrawable shape = (GradientDrawable) bgDrawable.findDrawableByLayerId(R.id.round_button_shape); shape.setColor(Color.BLACK);

5
投票
circle.xml(可绘制)

5
投票
[也许其他人需要在XML中更改颜色而无需创建多个我需要的可绘制对象。然后使一个无颜色的可绘制圆,然后为ImageView指定backgroundTint。

2
投票
此解决方案使用android sdk v19为我工作:

2
投票
如果您有这样的imageView:
© www.soinside.com 2019 - 2024. All rights reserved.