Hacer vista de encabezado (no encabezado de sección) de ListView Stick en la parte superior

Tengo un ListView con un HeaderView.

Quiero una de las vistas en el HeaderView para pegarse en la parte superior.

He visto muchos ejemplos de encabezados de sección pegajosos.

También miré StickyScrollViewItems pero puesto que utilizo un ListView , no puedo utilizar un ScrollView .

¿Hay una biblioteca disponible para esto o debo apenas sobreescribir el OnScrollListener del ListView ?

Gracias.

Acabo de escribir una carga de código que hace esto que no puedo compartir por razones contractoral. Básicamente siga el enfoque descrito aquí y aplique a una vista de lista en lugar de una vista de desplazamiento.

Los puntos principales son:

  1. Cree una vista de contenedor que contenga su encabezado flotante / pegajoso y su lista como hermanos
  2. Utilice un método proxy al agregar encabezados con un booleano isSticky – si es pegajoso, a continuación, agregue un encabezado falso en blanco a la vista de lista del mismo tamaño y su vista de cabecera prevista al encabezado de encabezado flotante (utilice un diseño relativo aquí)
  3. Establezca un listener de desplazamiento del listview que rastrea la posición px superior de la vista de encabezado falso en la lista y establezca esto como un margen superior del encabezado flotante que se encuentra dentro de un diseño relativo
  4. Manejar todos los casos de bordes molestos / OEM exceso de basura crap para conseguir que funcione en todas las situaciones (como esto para samsung)

Recuerde establecer la posición inicial del encabezado flotante / fijado después de haber establecido la vista de lista.

Me siento un poco involucrado y toma algunos ajustes para tener la derecha – este es un momento en el que envidio iOS y cualquier iOS devs va a pensar su slacking, ya que toma un tiempo para implementar: D

Todas las librerías Open que hay en el momento de escribir están usando vistas de desplazamiento o encabezados de vista de lista. Este problema con estos enfoques es que las vistas de lista reciclar vistas (por lo que a diferencia de las vistas de desplazamiento que no puede limitarse a mantener una referencia a la vista ficticia) y también las libras actuales parecen duplicar las vistas pegajosas utilizando el adaptador getView métodos y así sucesivamente – que no es bueno para Vistas de encabezado de vista de lista dinámica, ya que no se reciclan y sólo pueden tener un padre, por lo reparenting sería molesto (y en mi caso tiene una gran cantidad de funcionalidad por lo que no quiero crear dos vistas del mismo tipo y shoehorn las lib Para encajar mis soluciones)

No sé de ninguna biblioteca que le permite hacer esto, pero lo que hago para un encabezado es utilizar un RelativeLayout para mi xml que tendrá el ListView . A continuación, cree su vista de encabezado como quiera y déle la propiedad

 android:layout_alignParentTop="true" 

Entonces dé su ListView

 android:layout_below="@id/idOfHeaderView 

Esta es la forma más fácil que conozco de acoplar una vista de cabecera en la parte superior. Ha funcionado para mí cada vez. Espero que esto ayude.

  • Imágenes de carga lenta en ListView en Android
  • ¿Está todavía utilizando AsyncTask para cargar elementos de listView en segundo plano?
  • Android ListView Fondo no pintado
  • Android cursorLoader con paginación o carga más funcionalidad?
  • Android Colores Alternativos Para ListView es Aleatorio
  • Cambiar en el adaptador para un ListView
  • Eliminar ListView pie de página Click Listener
  • Utilizar OnItemClickListener en ListView dentro de ViewPager
  • Listview en el lado de rleft y tabhost en el lado derecho con la proporción de 20:80 compartir pantalla
  • ¿Cómo cargar sólo nuevos elementos en pull para actualizar listview personalizado?
  • Cajón de navegación Cambia el fondo mientras se desplaza
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.