Как добавить штрих в ShapeDrawable

Привет, я хочу создать фигуру, которую можно рисовать, и заполнить ее градиентным цветом с белым штрихом. Вот мой код

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

Проблема заключается в том, что прямоугольник появляется с заполнением градиентом, но без штриха

Похоже, этот человек боролся с одной и той же проблемой, и единственным способом, который они обнаружили, было подклассическое ShapeDrawable:

Попытка нарисовать кнопку: как установить цвет штриха и как «выровнять» градиент на дне, не зная высоты?

ShapeDrawable не позволяет вам легко нарисовать ход вокруг него. Если вы действительно этого хотите, это будет приятное место для просмотра.

ИЛИ

Вы можете использовать GradientDrawable

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

(PS: Это указано как комментарий на той же странице!)

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

Попробуйте, он будет работать определенно

Измените стиль на 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);