Tengo un listView personalizado que contiene un encabezado anclado, y x cantidades de vistas "push-up", que se pueden subir y ocultar encima de la vista de lista.Vista de lista personalizada con encabezado fijo, que causa Jank al configurar el relleno
He añadido una imagen para explicarlas. Perdón por la "censura negra", solo para ocultar el logotipo de los clientes, etc.
Mi problema es que si agrego un relleno a la vista del Encabezado clavado, obtendré los elementos listview flotando detrás de él.
La vista de encabezado fijada se implementa con la misma técnica que encontrará si busca PinnedHeaderListView, es decir, una vista estática y un encabezado en la vista de lista.
He encontrado una manera de habilitar el relleno, es decir, aplicando el mismo relleno que el encabezado fijado, al listView real, pero solo cuando el encabezado estático está visible.
Sin embargo, la invocación de setPadding causa un Jank bastante visible que me gustaría eliminar. ¿Alguien tiene alguna idea de cómo eliminar este jank?
Tengo una aplicación simple con vistas simples y datos ficticios, que no muestra este jank, por lo que tal vez la cantidad de jank depende de la complejidad de los diseños de las celdas.
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());
}
}
En primer lugar aquí es la imagen que muestra las cabeceras hundida hasta
Aquí está una imagen que muestra cómo las cosas se ven inmersos detrás de la vista clavada estática acolchada. Vale la pena observar que funciona como se requiere si ajusto el relleno de listView, pero obtendré Jank (ralentización), en el momento en que enciende/apaga la vista de cabecera estática.
+1 para imágenes muy bonitas, buen trabajo de arte :) –
por favor, no es cuestión suya, pero ¿podría decirme cómo organizó su lista de listas y el diseño de la aplicación? – Angelika