Ho appena scritto un carico di codice che fa questo che non posso condividere per ragioni contrattuali. In pratica, seguire l'approccio delineato here e applicare a un listview anziché a una vista di scorrimento.
punti principali sono
- creare una vista involucro che contiene il galleggiante/intestazione appiccicoso e il vostro ListView come fratelli
- utilizzare un metodo proxy durante l'aggiunta di intestazioni con un booleano isSticky - se è appiccicoso quindi aggiungere un falso intestazione vuota al listview della stessa dimensione e la tua intestazione vista al wrapper di intestazione mobile (usa un layout relativo qui)
- Imposta un listener di scroll del listview che tiene traccia della posizione del px superiore della vista di intestazione fittizia nel elenca e imposta questo come margine superiore dell'intestazione mobile che si trova all'interno di un re Layout lative
- gestire tutti i casi limite fastidioso/OEM Overscroll merda per farlo funzionare in tutte le situtions (come this per Samsung)
Ricordate di impostare la posizione iniziale del galleggiante intestazione/appuntato dopo la listview è stato steso.
mi sento proprio un po 'coinvolto e si senta qualche ritocco per ottenere di destra - questo è un momento in cui invidio iOS e qualsiasi iOS sviluppatori penserò tua Slacking come ci vuole un po' per l'attuazione: D
Tutto il Le librerie aperte disponibili al momento della scrittura utilizzano le visualizzazioni di scorrimento o le intestazioni di visualizzazione di elenchi.Questo problema con questi approcci è che le viste delle liste riciclavano (quindi a differenza delle viste di scorrimento non puoi semplicemente mantenere un riferimento alla vista fittizia) e anche le librerie correnti sembrano duplicare le viste appiccicose usando i metodi dell'adattatore getView
e così via - il che non va bene per viste dell'intestazione della vista elenco dinamico in quanto non vengono riciclate e possono avere solo un genitore, quindi la riparazione sarebbe fastidiosa (e nel mio caso ha un sacco di funzionalità quindi non desidero creare due viste dello stesso tipo e calzare le librerie correnti per adattare le mie soluzioni)
Puoi mostrare il codice che stai cercando e indicare quale sia il risultato corrente? Se stai usando 'addHeaderView (v)' e li aggiungi nell'ordine corretto, non dovrebbe esserci un problema. – codeMagic
@codeMagic Ho appena guardato le librerie che ho menzionato. Ho usato addHeaderView ma non riesco a capire come renderlo stick. Gli esempi sono per le intestazioni di sezione non HeaderView per ListView. – dannyroa