如何向ShapeDrawable添加描边

7

您好,我想创建一个形状可绘制对象,并用渐变色填充它,同时带有白色描边。以下是我的代码:

    ShapeDrawable greenShape = new ShapeDrawable(new RectShape());
    Shader shader1 = new LinearGradient(0, 0, 0, 50, new int[] {
            0xFFBAF706, 0xFF4CD52F  }, null, Shader.TileMode.CLAMP);
    greenShape.getPaint().setShader(shader1);
    greenShape.getPaint().setStrokeWidth(3);
    greenShape.getPaint().setColor(Color.WHITE);
    greenShape.getPaint().setStyle(Paint.Style.FILL_AND_STROKE);`

问题在于矩形出现了渐变填充,但没有描边。

我不确定如何在代码中实现。你能用XML做吗? - CaseyB
使用XML很容易,但在我的情况下,我想用Java代码来实现。 - JustMe
4个回答

14

ShapeDrawable不能轻易地在其周围绘制描边。如果你真的想要,那么可以看看这里

或者你可以使用一个GradientDrawable

GradientDrawable gd = new GradientDrawable();
gd.setColor(Color.RED);
gd.setCornerRadius(10);
gd.setStroke(2, Color.WHITE);

2
如何将它制作成椭圆形?即填充的圆形,带有另一种颜色的描边? - android developer

2

我认为这是Android SDK上的一个bug。 - JustMe

1
<stroke
        android:width="2dp"
        android:color="#808080" />

尝试一下,它肯定会起作用


0

将样式更改为greenShape.getPaint().setStyle(Paint.Style.STROKE)

greenShape.setShaderFactory(new ShapeDrawable.ShaderFactory() {
        @Override
        public Shader resize(int width, int height) {
            return new LinearGradient(0, 0, 0, 0, Color.WHITE, Color.WHITE, Shader.TileMode.REPEAT);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接