android – 可以在TextView中设置多少文本,因此不需要滚动

对于具有特定字体和大小的特定文本字符串,可以在textview中设置多少文本,以便textview不需要滚动.我的意思是在TextView中可以容纳多少文本,而无需滚动.

这类似于
How do I determine how much text will fit in a TextView in Android?,但我找不到有效的解决方案.请帮忙. 最佳答案 假设您已经寻找其他选项并且没有一种简单的方法可以做到这一点,这里有一个理论上(我没有测试过)可能有用的hackish方法.

创建一个扩展TextView的新类.然后,覆盖将在TextView的内容更新后调用的方法.可能有更好的方法可以使用,但是对于这个例子,我们试试onDraw().此方法将检查宽度并查看是否需要能够滚动.如果是这样,它将修剪字符串并设置文本.它会在循环中执行此操作,直到它不再需要滚动为止.

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    if(getWidth() < computeHorizontalScrollRange()){
        // Requires scrolling, the string is too long

        // Do whatever you need to do to trim the string, you could also grab the remaining string and do something with it.

        // Set the TextView to use the trimmed string.
    }

}

您可能希望确保它没有进入无限循环并检查宽度是否为零.

您还可以查看各种android:ellipsize选项.

点赞