我将格式化的单行文本(没有 \n)放到不可编辑的 TextView 中。在程序的导航中,可以更改文本。在某些文本上,TextView 缩小到 0x0 像素,我什么也看不到!我添加了一些菜单来每次将文本截断 10 个字符,我发现如果字符数大于 4470,则 TextView 会缩小。
通过将 \n 放在中间将文本分成几行可以解决问题,但这不是我的意图。
你能帮我看看这是否被记录在案,或者有什么可以设置来消除这个限制吗?
我做了一些测试。看来这个值不是固定的。它每次都上下移动。但是有一些限制:
在我的第一次测试中,它在一行中最多可以处理179 899 个字符。通过添加android:maxLength="10000000"
到 xml 我得到了184 200。但这个数字只工作了一次。在\n
每个字符后换行,我得到了大约750 000。
有趣的是,textView 从未像当时那样缩小。该应用程序崩溃了:
抛出 OutOfMemoryError “在 OOM 之前无法分配 0 个空闲字节和 0B 的 32 字节分配,目标占用空间 536870912,增长限制 536870912”(VmSize 2143664 kB,递归案例)
我使用了 Pixel 3 API 29 模拟器,内存为 1536 mb,堆为 256mb,代码如下:
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i<750000; i++) {
stringBuilder.append("A\n");
}
textView.setText(stringBuilder);
我在文档中没有找到任何东西。
底线是没有实际的最大值,今天手机有更多的内存......