Come faccio a creare una ListView che non è in uno ScrollView, o ha lo ScrollView disabile?

StackOverflow https://stackoverflow.com/questions/2419246

  •  19-09-2019
  •  | 
  •  

Domanda

Voglio un po 'delle chicche in un ListView, come essere in grado di utilizzare un ListAdapter, e selezione della voce, ecc, ma non voglio che la parte ScrollView di esso. Voglio realizzare quella parte io stesso, in un modo diverso (perché o come faccio questo non è davvero il punto di questa domanda, quindi per favore non chiedere "perché").

C'è un modo per avere un controllo ListView che non è in uno ScrollView o ha disattivato lo scorrimento?

È stato utile?

Soluzione

Un ListView non è in un ScrollView. Un ListView non scorrimento intrinsecamente. Io non credo che si possa disattivare lo scorrimento attraverso una semplice API. Se è così, le scelte sono o sottoclasse ListView e cercare di trovare il modo di ignorare lo scorrimento comportamenti, clone ListView ed eliminare lo scorrimento comportamenti, o lascia la tua AdapterView che rende le cose nel modo desiderato.

Altri suggerimenti

Un altro modo per farlo è quello di avvolgere il ListView in qualsiasi soluzione di scorrimento personalizzato che hai cucinato. Se è sufficiente impostare l'altezza della ListView ad essere esattamente come alto come tutte le righe (utilizzando LayoutParams della visualizzazione elenco), allora sarà agire come una vista normale e non sarà in grado di scorrere; pertanto è possibile aggiungerlo ad un'altra vista di scorrimento. La difficoltà di questo metodo è che si deve conoscere l'altezza della vostra lista prima del tempo, in modo da avere per conoscere l'altezza di ogni riga. Inoltre, questo creerà tutte le righe in una sola volta e quindi non sarà in grado di sfruttare la funzionalità di visualizzazione-riciclaggio.

Se non si dispone di un modo semplice per calcolare l'altezza prima del tempo, si può ingannare il ListView a fare per voi sovrascrivendo onMeasure e dandogli il proprio spec Altezza:

// Calculate height of the entire list by providing a very large 
// height hint.  But do not use the highest 2 bits of this integer; 
//  those are reserved for the MeasureSpec mode.
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
        MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top