Android TextView上的最大行长度

时间:2010-01-08 10:12:45

标签: android textview paint

我将格式化的单行文本(没有\ n)放到不可编辑的TextView中。在程序的导航中,可以更改文本。在某些文本中,TextView缩小到0x0像素,我什么都看不见!我添加了一些菜单来每次截断文本10个字符,我发现如果字符数大于4470,TextView会缩小。

通过将\ n放在两者之间将文本分成几行来解决问题,但这不是我的意图。

您能帮我查一下这是否有记录,或者是否有任何可以设置来消除此限制的内容?

1 个答案:

答案 0 :(得分:0)

我做了一些测试。似乎此值不是固定的。每次都上下移动。 但是有一些限制:

  • TextView.maxLines默认为Integer.MAX_VALUE(2147483647)
  • TextView.maxEms默认为Integer.MAX_VALUE
  • Java字符串通常为Integer.MAX_VALUE或最大值的一半 堆大小

在我的第一个测试中,它一行最多可以记录 179 899个字符。 通过将android:maxLength="10000000"添加到xml中,我达到了 184200 。但是这个数字只有一次。 在每个字符之后\n换行时,我的字符数达到 750 000

有趣的是,textView从来没有像那时那样缩小过。该应用程序崩溃了:

Throwing OutOfMemoryError“无法分配32字节分配 具有0个空闲字节和0B,直到OOM,目标占用空间536870912,增长 限制536870912“(VmSize 2143664 kB,递归情况)

我使用的Pixel 3 API 29仿真器具有1536 mb ram,256 mb堆和以下代码:

StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i<750000; i++) {
  stringBuilder.append("A\n");
}
textView.setText(stringBuilder);

我在documentation中找不到任何内容。

最重要的是没有 practical 最大值,而今天的手机有更多的存储空间...