Comment puis-je créer un ListView qui est pas dans un ScrollView, ou a le ScrollView désactivé?

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

  •  19-09-2019
  •  | 
  •  

Question

Je veux quelques-uns des goodies dans un ListView, comme être en mesure d'utiliser un ListAdapter et la sélection des objets, etc, mais je ne veux pas la partie ScrollView de celui-ci. Je veux mettre en œuvre moi-même partie, d'une manière différente (pourquoi ou comment je fais ce n'est pas vraiment le point de cette question, alors s'il vous plaît ne demande pas « pourquoi »).

Est-il possible d'avoir un ListView qui n'est pas dans un ScrollView ou a le défilement désactivé?

Était-ce utile?

La solution

Un ListView n'est pas dans un ScrollView. Un ListView ne défilement intrinsèquement. Je ne crois pas que vous pouvez désactiver le défilement via une API simple. Si oui, vos choix sont soit sous-classe ListView et essayer de trouver des façons de passer outre les comportements de défilement, ListView clone et éliminer les comportements de défilement, ou écrire votre propre AdapterView qui rend les choses comme vous voulez.

Autres conseils

Une autre façon de le faire est d'envelopper le ListView quelle que soit la solution défilement personnalisée que vous avez concoctée. Si vous définissez simplement la hauteur du ListView être exactement aussi haut que toutes les lignes (en utilisant la LayoutParams de vue sur la liste), il agira comme une vue normale et ne sera pas en mesure de faire défiler; vous pouvez donc l'ajouter à une autre vue de défilement. La difficulté de cette méthode est que vous devez savoir à l'avance la hauteur de votre liste, vous devez connaître la hauteur de chaque ligne. En outre, cela va créer toutes les lignes à la fois et donc vous ne serez pas en mesure de profiter de la fonction de vue de recyclage.

Si vous ne disposez pas d'un moyen simple de calculer la hauteur à l'avance, vous pouvez tromper le ListView en pour vous faire en remplaçant onMeasure et en lui donnant votre propre spécification de hauteur:

// 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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top