首页 > 解决方案 > 我应该使用带有 1000 个子视图的 NestedHorizalScrollview 吗?

问题描述

我应该使用带有 1000 个子视图的 NestedVerticalScrollview Android 吗?

标签: androidandroid-studio

解决方案


在 Android 中生成视图通常很快,但如果做很多,它会变得很昂贵。根据您的 itemView 的复杂性,在您的情况下滚动时这可能会变得非常昂贵。除非你使用RecyclerView,每当视图离开屏幕时,该视图将被销毁,并且通过滚动显示的每个新项目都必须重新创建。RecyclerView 会对这些视图进行回收处理,因此如果每个 itemView 具有相同的布局,它可以重用过去的视图来呈现新的信息,从而节省创建视图所需的时间。在您的情况下,听起来所有 1000 个视图都会在创建时创建,这可能需要相当长的时间来创建活动/片段,并且浪费资源,因为任何时候都可能只显示大约十二个视图一度。

我建议两件事:

  • 使用 RecyclerView 代替 NestedVerticalScrollView。是Java中RecyclerView的官方android代码实验室。如果您使用 kotlin 进行编码,我相信您可以通过搜索找到 kotlin 版本。
  • 如果您的 itemView(在 recyclerView 术语中,这是一个 ViewHolder)很复杂(也称为嵌套),请在您的 ViewHolder 中使用 constraintLayout。如果它是一个简单的布局,你可以使用一个 LinearLayout,或者如果它不能提供你想要的布局,RelativeLayout。即使您只是创建一个 TextView,您也应该使用 RecyclerView 所需的 ViewHolder 模式。

您可以手动测试滚动行为的性能,以查看在具有 1000 个子视图的 ScrollView 中滚动时是否遇到延迟。我怀疑你会,即使是最基本的 itemView。

此外,不要在 ScrollView 中使用 RecyclerView,这将无法正常工作(如我在上面第一个链接中链接的 RecyclerView 文档中所述。)


推荐阅读