我遇到了糟糕的 TableLayout 性能。我在这里读过一些帖子,谈论同样的事情......
Android 动态创建表 - 性能不佳 https://stackoverflow.com/questions/9813427/android-dynamically-created-table-bad-performance
我在已经很复杂的布局中使用了表格布局。我已经使用了很多视图,当然,我使用的视图越多,性能就越差,这是显而易见的,但我想知道与其他小部件相比,性能怎么可能这么差。
就我而言,假设具有 5*5 文本视图(行中只有纯文本视图)的表格布局会导致系统冻结甚至超过 1.5 秒,有时仅通过更新 TextView 即可。我不是在谈论渲染整个表格,而是只是更新表格布局内的一个文本视图。
我怀疑是setColumnsStretchable(),但即使将其设置为从不拉伸,性能也是一样的。
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
final TextView target=(TextView)seekBar.getTag();
target.setText(""+progress);
}
这是我用来更新单元格的代码。如您所见,它是 SeekBar 侦听器的一部分。我什至不需要 findView() 或任何东西,因为我将目标文本视图存储为搜索栏的标签。
因此,移动搜索栏会导致跳跃:需要超过一秒!单独执行 setText() 。如果我更新不在表内的任何其他文本视图,则会立即更新,如预期的那样。
如果我的桌子是 10*10,那么,大约需要 3 秒!
根据您的经验,TableLayout 是禁忌还是我可能做错了什么?也许行或单元格布局参数有一些神奇的值?
提前致谢。