我可以知道有多少个字符可以容纳X dp宽度的TextView吗?

san*_*one 7 android textview

有没有办法知道10sp字体大小的字符数可以适应固定宽度的TextView(比方说100dp)?

我需要跟踪整个字符串是否适合(可见)到预定宽度的TextView中.

我找不到跟踪或计算方法的方法.

Dhe*_*.S. 8

由于Android使用比例字体,因此每个字符占用不同的宽度.此外,如果考虑到字距调整,字符串的宽度可能会短于单个字符宽度的总和.

因此,通过一次添加一个字符来测量整个字符串是最容易的,直到(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));
Run Code Online (Sandbox Code Playgroud)

如果性能很差,您可以尝试使用二进制搜索方法而不是线性循环.


mat*_*784 0

确定这一点的最佳方法就是对其进行测试。由于您使用的是 DP,因此它相对与设备无关。除非您使用固定宽度字体,否则理论上没有办法确定它,除非您想实际尝试测量每个字母的宽度、字距等并与 TextView 的宽度进行比较