1つの固定ヘッダーとx個の「プッシュアップ」ビューを含むカスタムlistViewがあり、リストビューの上にプッシュして非表示にすることができます。
それらを説明するために画像を添付しました。お客様のロゴなどを隠すためだけに「黒の検閲」でごめんなさい。
私の問題は、固定されたヘッダービューにパディングを追加すると、リストビューアイテムがその背後に浮かぶことです。
固定されたヘッダービューは、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(スローダウン)が発生します。