更改 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】:

我猜你正在绘制文本两次,一次用橙色(手动在画布上),一次用白色(TextViewsuper.onDraw 绘制的内容)。

您可以绘制较小的白色文本并将橙色文本留给TextViewsuper.onDraw,而不是手动绘制较大的橙色。这样一来,所有东西都应该适合画布。

【讨论】:

不幸的是,我不能对文本使用小字体,对橙色轮廓使用大字体。它仅适用于一个字符。因为与字体大小相关的字母间空间会随之改变。 你试过这个solution吗?它解释了你应该第一次用描边绘制文本,并在 TextView 中添加填充,这样描边就不会被截断。

以上是关于更改 TextView 的画布大小的主要内容,如果未能解决你的问题,请参考以下文章

从菜单选项如何更改 TextView 颜色和大小

方向更改会增加TextView的文本大小

TextView 没有出现在画布上

TextView 中的字体大小

调整片段中 TextView 的文本大小

我有一个始终以固定大小显示的 TextView