我有一个自定义列表视图,其中包含一个固定标题和 x 数量的“上推”视图,可以上推并隐藏在列表视图上方。
我附上了图片来解释它们。对不起“黑色审查”,只是为了隐藏客户标志等。
我的问题是,如果我向固定的 Header 视图添加填充,我将让列表视图项浮动在它后面。
固定标题视图的实现方法与您搜索 PinnedHeaderListView 时会发现的技术相同,即静态视图和列表视图中的标题。
我找到了一种启用填充的方法,即通过将与固定标题相同的填充应用于实际的 listView,但仅当静态标题可见时。
但是,调用 setPadding 会导致我想删除一个非常明显的 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 的填充,它会按预期工作,但我会在打开/关闭静态标题视图时得到 Jank (slowdown) 。