如何以编程方式创建图层列表drawable?

时间:2017-07-02 18:42:22

标签: java android drawable layer-list

我想以编程方式绘制类似 icon.xml 的形状,但我无法将第二个圆圈嵌入第一个圆圈,这是我的代码:

icon.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/ok">
<shape
    android:shape="oval">
    <solid android:color="#ffffff" />
    <size android:width="33px" android:height="33px"/>
    <stroke android:width="4px"
        android:color="#ff0000"/>
    <padding android:bottom="8px"
        android:left="8px"
        android:right="8px"
        android:top="8px"/>
</shape>
</item>
<item>
<shape android:shape="oval">
    <solid android:color="#ccff0000"/>
</shape>
</item>

</layer-list>

MainActivity.java

    GradientDrawable layer1 = new GradientDrawable();
    layer1.setShape(GradientDrawable.OVAL);
    layer1.setSize(33,33);
    layer1.setColor(Color.WHITE);
    layer1.setStroke(4,Color.RED);

    GradientDrawable layer2 = new GradientDrawable();
    layer2.setShape(GradientDrawable.OVAL);
    layer2.setColor(Color.BLUE);

    InsetDrawable insetLayer2 = new InsetDrawable(layer1, 8, 8, 8, 8);

    LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]
    {insetLayer2,layer2});
    button.setBackground(layerDrawable);

出了什么问题?

提前谢谢

1 个答案:

答案 0 :(得分:1)

最后我得到了答案。我的问题是如何为Circle设置填充, 但是我们可以使用setLayerInset(int index, int l, int t, int r, int b)以编程方式为两个渐变设置填充。