如何在 TextView Android 中将渐变设置为文本颜色并在其周围添加描边?
How to set gradient as text color as well as add stroke around it in TextView Android?
我想将渐变设置为文本颜色,同时我希望文本在 TextView
中也有实心笔触。到目前为止,我实现的是文本只能显示渐变或描边,不能同时显示两者。
我创建了一个带有扩展 TextView
的自定义 class,我正在使用以下方法:
用这个画笔画:
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(_strokeWidth);
setTextColor(_strokeColor);
这给了我这个结果:
使用以下代码添加渐变:
Shader textShader = new LinearGradient(0f, 0f, getWidth(), getTextSize(), gradientColorsArray, null, Shader.TileMode.CLAMP);
paint.setShader(textShader);
它给了我以下结果:
问题是当我结合以上两种方法时,绘制了笔划,但笔划的颜色与我给绘画对象的渐变相同。
下面是我想要达到的结果。如果有人能指导我如何达到预期的结果,那就太好了。
所以等了4天多,研究了很多,终于能够成功达到预期的输出。
我犯的错误是在绘制对象上绘制笔划时,我将笔划颜色设置为 textcolor
。这次我做的是创建一个 LinearGradient()
对象,并在设置 paintStyle(Paint.Style.Stroke)
.
时将其交给 paint.shader
Paint paint = this.getPaint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5f);
paint.setShader(new LinearGradient(0f, 0f, getTextSize(), getTextSize(), mOutlineColor, mOutlineColor, Shader.TileMode.CLAMP));
在我的 CustomTextView
class 的 onDraw()
方法中设置笔划后,我调用了 super.onDraw(canvas)
然后我为渐变颜色创建一个新的 LinearGradient()
对象,如下所示:
Paint paint = this.getPaint();
paint.setStyle(Paint.Style.FILL);
Shader linearShader = new LinearGradient(0f, 0f, getWidth(), getTextSize(), colors, null,
Shader.TileMode.CLAMP);
paint.setShader(linearShader);
终于再次调用 super.onDraw(canvas)
,这为我的 textview
提供了笔触和渐变作为 textColor。
我想将渐变设置为文本颜色,同时我希望文本在 TextView
中也有实心笔触。到目前为止,我实现的是文本只能显示渐变或描边,不能同时显示两者。
我创建了一个带有扩展 TextView
的自定义 class,我正在使用以下方法:
用这个画笔画:
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(_strokeWidth);
setTextColor(_strokeColor);
这给了我这个结果:
使用以下代码添加渐变:
Shader textShader = new LinearGradient(0f, 0f, getWidth(), getTextSize(), gradientColorsArray, null, Shader.TileMode.CLAMP);
paint.setShader(textShader);
它给了我以下结果:
问题是当我结合以上两种方法时,绘制了笔划,但笔划的颜色与我给绘画对象的渐变相同。
下面是我想要达到的结果。如果有人能指导我如何达到预期的结果,那就太好了。
所以等了4天多,研究了很多,终于能够成功达到预期的输出。
我犯的错误是在绘制对象上绘制笔划时,我将笔划颜色设置为 textcolor
。这次我做的是创建一个 LinearGradient()
对象,并在设置 paintStyle(Paint.Style.Stroke)
.
paint.shader
Paint paint = this.getPaint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5f);
paint.setShader(new LinearGradient(0f, 0f, getTextSize(), getTextSize(), mOutlineColor, mOutlineColor, Shader.TileMode.CLAMP));
在我的 CustomTextView
class 的 onDraw()
方法中设置笔划后,我调用了 super.onDraw(canvas)
然后我为渐变颜色创建一个新的 LinearGradient()
对象,如下所示:
Paint paint = this.getPaint();
paint.setStyle(Paint.Style.FILL);
Shader linearShader = new LinearGradient(0f, 0f, getWidth(), getTextSize(), colors, null,
Shader.TileMode.CLAMP);
paint.setShader(linearShader);
终于再次调用 super.onDraw(canvas)
,这为我的 textview
提供了笔触和渐变作为 textColor。