有没有办法知道10sp字体大小的字符数可以适合固定宽度的TextView(比方说100dp)?
我需要跟踪整个字符串是否适合(可见)到预定义宽度的TextView中。
我无法找到跟踪或计算此方法的方法。
答案 0 :(得分:8)
由于Android使用proportional fonts,因此每个字符占用不同的宽度。此外,如果考虑kerning,字符串的宽度可能会短于单个字符宽度的总和。
因此,最简单的方法是一次添加一个字符来测量整个字符串,直到(a)整个字符串(如果发现符合限制),或(b)字符串的宽度超出限制。
以下代码显示如何查找大小为11px的字符数适合TextView 100px宽度。 (您可以在Web上找到在px和dp之间进行转换的公式。)
我们会在循环中使用measureText(String text, int start, int end)
来增加end
的值,直到它不再符合TextView
的宽度。
String text = "This is my string";
int textViewWidth = 100;
int numChars;
Paint paint = textView.getPaint();
for (numChars = 1; numChars <= text.length; ++numChars) {
if (paint.measureText(text, 0, numChars) > textViewWidth) {
break;
}
}
Log.d("tag", "Number of characters that fit = " + (numChars - 1));
如果性能不佳,您可以尝试使用二进制搜索方法而不是线性循环。
答案 1 :(得分:0)
确定这一点的最佳方法就是测试它。由于您使用的是DP,因此它将与设备无关。除非你使用固定宽度的字体,否则理论上没有办法确定它,除非你想真正尝试测量每个字母的宽度,字距等,并与TextView的宽度进行比较