Ho un listView personalizzato che contiene un'intestazione bloccata e x quantità di viste "push-up", che possono essere spostate verso l'alto e nascoste sopra la vista elenco.ListView personalizzato con intestazione appuntata, che causa Jank durante l'impostazione del padding
Ho allegato un'immagine per spiegarle. Ci scusiamo per la "censura nera", solo per nascondere il logo del cliente ecc.
Il mio problema è che se aggiungo un padding alla vista Header appuntato, otterrò gli oggetti listview galleggianti dietro di esso.
La vista dell'intestazione fissata, è implementata con la stessa tecnica che si troverà se si cerca PinnedHeaderListView, ovvero una vista statica e un'intestazione nella lista.
Ho trovato un modo per abilitare il padding, e cioè applicando lo stesso padding dell'intestazione pinata, al listView attuale, ma solo quando l'intestazione statica è visibile.
Tuttavia, la chiamata di setPadding causa un Jank abbastanza visibile che vorrei rimuovere. Qualcuno ha qualche idea su come rimuovere questo jank?
Ho una semplice applicazione con viste semplici e dati fittizi, che non mostra questo jank, quindi forse la quantità di jank dipende dalla complessità dei layout di cella.
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());
}
}
Primo Ecco l'immagine che mostra le intestazioni spinto-up
Ecco un'immagine che mostra come le cose vengono trascinati dietro la vista appuntato statica imbottita. Vale la pena notare che funziona come previsto se aggiusto il padding di listView, ma otterrò Jank (rallentamento), al momento dell'accensione/spegnimento della vista statica dell'intestazione.
+1 per immagini molto belle, opere d'arte fantastiche :) –
plz è fuori dalla tua domanda, ma mi diresti come hai organizzato la tua listview e il layout dell'applicazione? – Angelika