38 votes

Comment désactiver le défilement du GridView dans Android ?

J'utilise un GridView pour un plateau de jeu. Récemment, certains utilisateurs ont eu des problèmes de défilement vertical du tableau (sur les téléphones Samsung Galaxy / Vibrant fonctionnant avec la version 2.2) -- Ce bug ne se produit pas sur mon Nexus One.

Un utilisateur a produit quelques captures d'écran du problème.

Comment puis-je verrouiller la grille de visualisation en place ? Existe-t-il un moyen de désactiver le défilement ?

96voto

Fadhlan ajah Points 721

Essayer d'ajouter ou de remplacer setOnTouchListener para GridView , alors en onTouch vous pouvez utiliser un code comme celui-ci pour faire gridView pas de défilement

Java

gridView.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return event.getAction() == MotionEvent.ACTION_MOVE;
    }

});

Kotlin

gridView.setOnTouchListener { v, event ->
    event.action == MotionEvent.ACTION_MOVE
}

8 votes

Cette solution est correcte et devrait être acceptée comme réponse à la question.

3 votes

Il arrête également le déclenchement de onItemClick de GridView. Comment éviter cela ?

1 votes

Quel serait le code pour réactiver le défilement du GridView, si nécessaire ?

11voto

Romain Guy Points 57114

Vous pouvez essayer setEnabled(false), bien que cela puisse avoir d'autres effets secondaires. GridView n'est pas vraiment conçu pour être utilisé de la manière dont vous l'utilisez. Vous devriez créer votre propre vue ou disposition personnalisée. Vous pouvez également utiliser un TableLayout.

0 votes

Oui, je me suis rendu compte qu'il devrait s'agir d'une vue personnalisée. Ce sera un peu plus compliqué de remplacer le GridView actuel (erreur de conception initiale). J'espérais qu'il y aurait une solution rapide :) La méthode setEnabled() désactive toutes les fonctionnalités. Merci Romain

1 votes

Romain Guy ne veut surtout pas que vous utilisiez une GridView sans scrolling. J'utilise ceci stackoverflow.com/a/4536955/671543 truc.

0 votes

Pour les futurs lecteurs, j'ai trouvé un exemple avec TableLayout : stackoverflow.com/a/8639461/3844201

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X