哪个ViewGroup要使用的Android

时间:2016-04-11 00:29:12

标签: android android-layout listview

这是一个非常具体的案例,所以我会尽力适当地组织这个问题。我有一个自定义ViewGroup,它正在为我的目的而工作,但它的初始化导致跳帧。

我的应用包含ViewPagerFragment,其中每个父容器都是ScrollView。在这些视图中,我有许多不同的视图,一个是包含垂直行自定义视图的LinearLayout(用于操作数据集)。请参阅图片'前景,可见,辅助应用'

对于这种布局,我扩展了LinearLayout,并且每个人都在运行时填充,从xml中为每个孩子充气。

它运行正常,问题是在运行时膨胀所有这些子视图会导致跳帧。我已经使用方法跟踪来发现每次LayoutInflater.inflate()的调用都是平均4-6毫秒。在我的所有片段中,每个片段包含一个或多个这些列表,它在启动时会累积大量(40-50)跳过的帧。

手动创建子视图而不是充气可以改善它,但还不够。仍然非常引人注目的跳帧。

它需要某种形式的视图重用,类似于ListView所做的。

我看到了一个解决方案,尽管它看起来并不理想。 这是用具有多个视图类型的ScrollView替换片段容器ListView

我看到的一些问题是

  • 在上方,下方和这些列表之间的视图之间最多需要5-6种不同的视图类型。写作似乎很麻烦。
  • 每个子视图都需要能够使用简单的展开/折叠动画垂直扩展大小。不确定这是否与ListView行有关。
  • 它涉及重写几乎整个应用程序。我愿意这样做,但如果可能的话,我想尽量避免。

我想知道是否可以做到:

  • 不使用LinearLayout作为这些列表,而是使用ListView并扩展其大小以显示所有项目。它将嵌套在父ScrollView中。如果它的大小扩展到所有项目,它甚至会重用任何视图吗?

在这种情况下,我可以使用其他类型的容器吗?我还没有使用过新的RecyclerView,但从我所阅读的内容看起来与ListView基本相同。

基本上我尝试创建的是LinearLayout,可以回收视图。

不胜感激任何建议。如果这个问题读得不好,请告诉我。如果需要,我可以添加更多信息或发布代码。我意识到我在这里尝试做的事情有点不同寻常,并且可能因设计而存在内在缺陷。但我对它目前的呈现方式非常满意,并希望以这种方式保留它。

0 个答案:

没有答案