如何创建一个圆形的TextView

16

我一直在尝试制作一个圆形TextView。它是一个圆形,在其中我想容纳整个圆形气泡上方的所有空间,如下图所示。

请查看附加的图片。

带有文本的圆形气泡

在这张图片中,我们有一个带有圆形文本的圆形气泡。 我已经尝试将椭圆形.xml设置为TextView的背景,但仍然没有成功。

编辑:

随着文本长度的增加,它必须缩小以适合圆形内部。这是最难考虑的部分。

1个回答

10
你需要创建一个自定义视图,可能要扩展自TextView,将圆形设置为背景图像,并根据文本宽度手动计算文本宽度/换行。
要计算字符串的宽度,请参见如何计算字符串字体的像素宽度? 当然,需要一些数学和计算来测量每行可用空间;但我认为这是唯一的方法,因为没有标准组件可以完成这项工作。
要将文本放置到视图中,请使用Canvas类drawText

2
+1,这方面没有内置组件。同时,创建自定义视图很有趣 :) - Felix
你说过:“根据文本的宽度手动计算文本宽度/换行。”这需要动态适应圆形内长度不同的文本。我该如何测量文本在圆形内填充的行数? - Aqif Hamid
我认为你可以将整个文本测量为一个字符串,这样可以得到所需的整个宽度(以像素为单位)。然后,您需要计算每行的像素空间,从中心到外部开始。我手头没有公式,但这可能是我开始研究的方式。添加换行符,然后计算需要多少换行符。当然,这种计算有点“动态”,因为行数直接与每行的字符串长度相关。我相信这有点复杂,不是那么容易,但是可以做到;-) - Mathias Conradt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接