我知道如何使用自定义 View (EditText 或 TextView)对文本进行描边,但我无法实现像这个漂亮的东西,这是使用 Photoshop 完成的。是的,它也有外部阴影。
到目前为止我所做的是调整笔划宽度和笔划连接样式。但是,如果我增加笔画宽度,笔画就会出现在整个文本中。 据我搜索,有一个名为 MagicTextView 的图书馆但它也无法给出上述结果。
更新:我根据@pskink 的建议进行了调整。现在可以了。但是我不能再拖了。如果我拖动那个 EditText,就会出现一些像这样的奇怪线条。
代码如下:
@Override public void onDraw(Canvas canvas) {
final int x = this.getLeft();
final int y = this.getBottom();
mText = this.getText().toString();
p.setStrokeWidth(30);
p.setStyle(Style.STROKE);
p.setStrokeJoin(Join.ROUND);
p.setColor(0xffffffff);
canvas.drawText(mText, x, y, p);
p.setStyle(Style.FILL);
p.setColor(0xff000000);
canvas.drawText(mText, x, y, p);
}
最佳答案
经过几个小时的调整,我已经修复了更新问题中所述的奇怪线路问题。我想我应该在这里发布作为答案。
@Override public void onDraw(Canvas canvas) {
mText = this.getText().toString();
p.setStyle(Style.STROKE);
p.setStrokeJoin(Join.ROUND);
p.setShadowLayer(10, 1, 1, 0xcfcccccc);
canvas.drawText(mText, 0, getLineHeight(), p);
p.clearShadowLayer();
p.setStrokeWidth(35);
p.setStrokeJoin(Join.ROUND);
p.setStyle(Style.STROKE);
p.setColor(0xffffffff);
canvas.drawText(mText, 0, getLineHeight(), p);
p.setStyle(Style.FILL);
p.setColor(0xff000000);
canvas.drawText(mText, 0, getLineHeight(), p);
canvas.translate(xPos, yPos);
}
xPos 和 yPos 是来自 ACTION_MOVE
onTouch 事件的 x 和 y 值。我们需要为 Canvas 文本添加行高作为 Y。
关于android - Android 中漂亮的描边文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29506643/