如何绘制不同笔画和填充颜色的文字?

我想在我的应用程序中显示如下文字。 我正在使用风格FILL_AND_STROKE Paint类来实现这一点。 但是只有一个方法setColor()可用来设置颜色。

如何设置不同的笔触和填充颜色?

文本与不同的中风和填充颜色

Solutions Collecting From Web of "如何绘制不同笔画和填充颜色的文字?"

内部自定义TextView(在EditText中不起作用):

 @Override public void onDraw(Canvas canvas) { final ColorStateList textColor = getTextColors(); TextPaint paint = this.getPaint(); paint.setStyle(Style.STROKE); paint.setStrokeJoin(Join.ROUND); paint.setStrokeMiter(10); this.setTextColor(strokeColor); paint.setStrokeWidth(strokeWidth); super.onDraw(canvas); paint.setStyle(Style.FILL); setTextColor(textColor); super.onDraw(canvas); } 

不要使用FILL_AND_STROKE。 用FILL绘制一次,然后改变颜色并用STROKE绘制。

(这对于矩形是有效的,我不确定STROKE是否适用于文本,你必须尝试一下,找出答案)。

不完全确定,但也许你可以使用这个:

链接

  TextView test = (TextView) findViewById(R.id.test); test.setShadowLayer(float, float, float, int); 

我使用了上面的第一个解决scheme来提出这个想法:放下一个更大的STROKE,文本,然后用一个更小的FILL_AND_STROKE文本覆盖它:

 mScorePaint = new TextPaint(); mScorePaint.setTextSize(63); mScorePaint.setStyle(Style.STROKE); mScorePaint.setStrokeJoin(Join.ROUND); mScorePaint.setStrokeMiter(10.0f); mScorePaint.setStrokeWidth(frameWidth/50.0f); // about 12 mScorePaint.setColor(0xffff0000); // black c.drawText(Integer.toString(mScore), x, y, mScorePaint); // red first mScorePaint.setStrokeWidth(frameWidth/125.0f); // about 5 mScorePaint.setColor(0xff000000); // red c.drawText(Integer.toString(mScore), x, y, mScorePaint); // black on top 

因为FILL本身并没有看到任何Stroke属性,而且显得非常薄弱。