如何向ShapeDrawable添加笔触

时间:2011-06-03 19:44:41

标签: android drawable

您好 我想创建一个可绘制的形状,并用白色笔划的渐变颜色填充它 这是我的代码

    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);`

问题是矩形出现渐变填充但没有描边

4 个答案:

答案 0 :(得分:10)

ShapeDrawable不允许您轻松地在其周围画一个笔划。 如果你真的想要那么this就是一个不错的选择。

OR

您可以使用GradientDrawable

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

(PS:这是在同一页面中作为评论给出的!)

答案 1 :(得分:0)

看起来这个人在同一个问题上挣扎,他们找到的唯一方法是继承ShapeDrawable:

Trying to draw a button: how to set a stroke color and how to "align" a gradient to the bottom without knowing the height?

答案 2 :(得分:0)

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

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

答案 3 :(得分: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);