代码之家  ›  专栏  ›  技术社区  ›  Shahin Ghasemi

如何以编程方式创建可绘制的图层列表?

  •  2
  • Shahin Ghasemi  · 技术社区  · 7 年前

    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>
    

        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 回复  |  直到 7 年前
        1
  •  1
  •   Lajos Arpad    7 年前

    最后我得到了答案。我的问题是如何设置外圆的填充, setLayerInset(int index, int l, int t, int r, int b) 分别用于两个梯度。