如何在Android中以编程方式更改形状的纯色?

时间:2016-03-19 14:46:58

标签: android shape android-imagebutton

我正在尝试更改solidshape的{​​{1}}颜色。

Fragment

我似乎无法从我的代码访问它,我已经在堆栈溢出上尝试了以下答案:

Set android shape color programmatically

How to change shape color dynamically?

Change shape solid color at runtime inside Drawable xml used as background

这些都没有奏效或过时。

我尝试更改颜色的片段:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/icon_circle_background">
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            ...>
            <solid android:color="@color/md_cyan_400"/>
        </shape>
    </item>
    <item
        ...
    </item>
</layer-list>

2 个答案:

答案 0 :(得分:1)

View v = findViewById(R.id.layout_id);
LayerDrawable shape= (LayerDrawable)v.getBackground();
shape.setColor(Color.Black);

答案 1 :(得分:1)

使用它:

GradientDrawable bgShape = (GradientDrawable)view.getBackground().getCurrent();
bgShape.setColor(Color.BLACK);

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

使用它不会抛出java.lang.ClassCastException:android.graphics.drawable.GradientDrawable无法强制转换为android.graphics.drawable.ShapeDrawable异常。

它对我来说非常适合。