更改 TextView 的画布大小
Posted
技术标签:
【中文标题】更改 TextView 的画布大小【英文标题】:change canvas size for TextView 【发布时间】:2015-02-13 05:56:29 【问题描述】:我需要使用带有大纲文本的 TextView。我尝试使用它:https://***.com/a/10294290/4181010,但它不能与android:layout_width="wrap_content"
一起正常工作,因为它在添加轮廓时不会增加画布。
我需要增加画布以包含 strokeWidth 的值。 我建议我必须以某种方式覆盖 onMeasure,但 TextView 在 onMeasure 末尾调用最终方法 setMeasuredDimension 以应用视图大小,此时我不能干预,以免重写整个方法。 在 OnDraw 中缩放画布也不起作用,因为 TextView 使用画布缩放绘制文本。 我的解决方案是增加画布并使用 canvas.translate() 在绘制文本之前移动到正确的位置。 我的问题是:如何以最少的干预增加画布的大小?或者有人知道这个问题的另一种解决方案吗?
【问题讨论】:
【参考方案1】:我猜你正在绘制文本两次,一次用橙色(手动在画布上),一次用白色(TextView
用super.onDraw
绘制的内容)。
您可以绘制较小的白色文本并将橙色文本留给TextView
的super.onDraw
,而不是手动绘制较大的橙色。这样一来,所有东西都应该适合画布。
【讨论】:
不幸的是,我不能对文本使用小字体,对橙色轮廓使用大字体。它仅适用于一个字符。因为与字体大小相关的字母间空间会随之改变。 你试过这个solution吗?它解释了你应该第一次用描边绘制文本,并在 TextView 中添加填充,这样描边就不会被截断。以上是关于更改 TextView 的画布大小的主要内容,如果未能解决你的问题,请参考以下文章