带有固定标题的自定义ListView,设置填充时会导致Jank

我有一个自定义列表视图,其中包含一个固定的标题,和x数量的“俯卧撑”的意见,可以推上去,并隐藏在列表视图之上。

我已附加图片来解释他们。 对不起,“黑色审查”,只是为了隐藏客户的标志等

我的问题是,如果我添加一个填充固定的标题视图,我会得到列表视图项目后面浮动。

固定的标题视图,使用与您将发现的相同的技术实现,如果您searchPinnedHeaderListView,也就是在列表视图中的静态视图和标题。

我find了一种方法来启用填充,即通过应用相同的填充作为固定标题,实际listView,但只有当静态标题是可见的。

然而,setPadding的调用会导致一个非常明显的Jank,我想删除它。 有没有人有任何想法如何消除这个结局?

我有一个简单的视图和虚拟数据的简单应用程序,没有显示这个jank,所以也许jank的数量取决于单元格布局的复杂性。

private void updateIfShouldShowStaticHeaderView() { //unfortunately setting the padding of the listView causes JANK. //any ideas? int bottomOfFloatingHeader = floatingHeader.getBottom(); if (bottomOfFloatingHeader < mHeaderViewHeight) { staticHeaderViewIsVisible = true; staticHeader.setVisibility(View.VISIBLE); //need to set padding of listView to avoid having list-view items float behind my padded static header setPadding(0, staticHeader.getPaddingTop(), 0, getPaddingBottom()); } else { staticHeaderViewIsVisible = false; staticHeader.setVisibility(View.INVISIBLE); //need to set padding of listView to avoid having list-view items float behind my padded static header setPadding(0, 0, 0, getPaddingBottom()); } } 

首先,这里是显示被推高的标题的图像 显示被推倒的头

这里是一个图像,显示如何在填充的静态固定视图后面绘制事物。 值得注意的是,如果我调整listView的填充,它将以满意的方式工作,但是在打开/closures静态标题视图时,我会得到Jank(减速)。

显示如果我不调整填充可见的错误

Solutions Collecting From Web of "带有固定标题的自定义ListView,设置填充时会导致Jank"

需要一些关于你的问题的更多信息。

根据我的理解,Jank是由于您正在使用的大量数据和可绘制的。

尝试为您的视图启用硬件加速。

有关硬件加速的更多信息,请访问http://developer.android.com/guide/topics/graphics/hardware-accel.html

由于listView上的setPadding会导致布局调用,所以这将是非常无效的,特别是在复杂的listView单元格的情况下。 一个解决scheme是将背景graphics添加到代表所需填充的固定标题。 这意味着整个固定标题是固定的。 列表视图的元素将被绘制在这个graphics的后面。 这是我们结束的解决scheme。

它的工作原理,但剪辑listView会更好。