android – LayerDrawable以编程方式

前端之家收集整理的这篇文章主要介绍了android – LayerDrawable以编程方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
由于我的应用程序的颜色主题是动态的,我只能使用颜色和shaperawables创建背景绘图,
我想构建一个可用颜色和形状绘制的edittext背景,如下所示.
但我想以编程方式执行此操作

如何以编程方式构建同样的drawable?

<item>
    <shape>
        <solid android:color="@android:color/yellow" />
    </shape>
</item>

<!-- main color -->
<item
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp">
    <shape>
        <solid android:color="@android:color/white" />
    </shape>
</item>

<!-- draw another block to cut-off the left and right bars -->
<item android:bottom="10dp">
    <shape>
        <solid android:color="@android:color/white" />
    </shape>
</item>

这就是我试过的……

GradientDrawable border = new GradientDrawable();
    border.setShape(GradientDrawable.RECTANGLE);
    border.setColor(Color.WHITE);

    GradientDrawable background = new GradientDrawable();
    background.setShape(GradientDrawable.RECTANGLE);
    background.setColor(Color.YELLOW);


    GradientDrawable clip = new GradientDrawable();
    clip.setShape(GradientDrawable.RECTANGLE);
    border.setColor(Color.WHITE);

    Drawable[] layers = {background,border,clip};
    LayerDrawable layerDrawable = new LayerDrawable(layers);

    layerDrawable.setLayerInset(0,0);
    layerDrawable.setLayerInset(1,1,1);
    layerDrawable.setLayerInset(2,10);

但结果是不同的….请帮助……!

解决方法

我终于搞定了.而不是使用GradientDrawable我使用了ShapeDrawable.

通过将此LayerDrawable设置为EditText背景,您可以重新生成默认的EditText
自定义颜色的样式.

ShapeDrawable border = new ShapeDrawable();
border.getPaint().setColor(Color.WHITE);

ShapeDrawable background = new ShapeDrawable();
background.getPaint().setColor(Color.BLACK);


ShapeDrawable clip = new ShapeDrawable();
clip.getPaint().setColor(Color.WHITE);

Drawable[] layers = {background,clip};
LayerDrawable layerDrawable = new LayerDrawable(layers);

layerDrawable.setLayerInset(0,0);
layerDrawable.setLayerInset(1,1);
layerDrawable.setLayerInset(2,10);
原文链接:https://www.f2er.com/android/314130.html

猜你在找的Android相关文章