我正在设置自定义程式化文本,使用app:autoSizeTextType="uniform"
动态更改其文本大小,并在其onDraw
方法中为其添加两个不同的笔划。在两个不同的笔划中,一个用作主要轮廓,另一个用作文本和主要轮廓之间的填充。
由于我使用app:autoSizeTextType="uniform"
文本很可能到达TextView
的末尾,但由于我正在为此添加笔划,因此会剪切笔划。将android:clipChildren="false"
添加到父级也不起作用。
@Override public void onDraw(Canvas canvas) {
super.onDraw(canvas);
int restoreColor = this.getCurrentTextColor();
if (strokeColor != null) {
// Outer outline
TextPaint outlinePaint = this.getPaint();
outlinePaint.setStyle(Paint.Style.STROKE);
outlinePaint.setStrokeJoin(strokeJoin);
outlinePaint.setStrokeMiter(strokeMiter);
this.setTextColor(ContextCompat.getColor(getContext(), R.color.colorLighterGrey));
outlinePaint.setStrokeWidth((getTextSize() / 10) + 2);
super.onDraw(canvas);
// Middle padding
TextPaint paddingPaint = this.getPaint();
paddingPaint.setStyle(Paint.Style.STROKE);
paddingPaint.setStrokeJoin(strokeJoin);
paddingPaint.setStrokeMiter(strokeMiter);
this.setTextColor(strokeColor == restoreColor ? ContextCompat.getColor(getContext(), R.color.colorLighterGrey) : strokeColor);
paddingPaint.setStrokeWidth(getTextSize() / 10);
super.onDraw(canvas);
this.setTextColor(restoreColor);
TextPaint paint = this.getPaint();
paint.setStyle(Paint.Style.FILL);
super.onDraw(canvas);
}
}
P.S。对这种操纵完全不熟悉,任何帮助都会受到赞赏。还看了Draw outside bounds