Android TextView上的最大行长

问题描述 投票:3回答:1

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

通过在中间插入\ n将文本分成几行解决了问题,但这不是我的意图。

您能帮我找到是否已记录在案,或者可以设置任何东西来消除此限制?

android textview paint
1个回答
0
投票

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

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

在我的第一个测试中,它一行最多可以处理179 899个字符。通过将android:maxLength="10000000"添加到xml中,我达到了[[184 200。但是这个数字只起作用一次。在每个字符之后都使用\n换行符,我最多可以达到750 000。我使用的Pixel 3 API 29仿真器具有1536 mb ram和256mb堆。

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

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

我使用的代码:

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

我没有找到任何documentation顺便说一句,我怀疑是否有任何官方文件。

所以最重要的是没有最大的[[实践]]

但是谁在乎。哦,今天手机有更多的存储空间...

© www.soinside.com 2019 - 2024. All rights reserved.