在 ScrollView 内的不可滚动网格视图中回收视图

Recycling views in a non-scrollable grid view inside ScrollView

我有一个包含其他几个视图的 ScrollView,我希望其中一个视图是具有相同布局的其他视图(例如 ImageView)的网格。

由于不建议将一个可滚动视图置于另一个可滚动视图中,我希望此网格视图不可滚动,否则我会使用 GridView 或 RecyclerView。

我当然可以将网格视图放在标准布局之一(例如 TableLayout)中,但是当存在许多网格项时,这可能会导致内存问题。 是否有任何标准方法或库允许在 ScrollView 中回收非滚动视图的视图?

如果你试图强制 GridViewRecyclerView 不可滚动(所以基本上你必须强制视图的尺寸显示所有元素)你最终会与使用 TableLayout 相同的情况(因此您需要注意内存问题)。

如果您禁用可滚动(回收)元素的滚动,例如 GridView/RecyclerView,您将禁用使这些元素高效工作的最重要部分(使这些元素重用它们的视图)。

解决问题的方法是将 ScrollViewother Views 作为 RecyclerView 的一部分。你的 RecyclerView 应该配备 adapter 可以给多种类型的 Views 充气(你可以阅读它,例如 here)。

因为您使用的是 RecyclerView,所以您可以使用 NestedScrollView 而不是 ScrollView 他们应该玩得更好,因为 RecyclerView 扩展自 NestedScrollingChildNestedScrollViewNestedScrollingParent.

扩展而来

您可以使用的其他视图是 VerticalGridView or HorizontalGridView but as you said you are worried about performance issues and you can provide a GridLayoutManagerRecyclerView 我会坚持使用。