web-dev-qa-db-fra.com

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

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

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

Comment pourrais-je verrouiller le GridView en place? Existe-t-il un moyen de désactiver le défilement?

35
pjama

Essayez d'ajouter ou de remplacer setOnTouchListener pour GridView, puis dans la méthode onTouch vous pouvez utiliser un code comme celui-ci pour rendre gridView non défilable

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
}
92
Fadhlan

Vous pouvez essayer setEnabled (false), bien que cela puisse avoir d'autres effets secondaires. GridView n'est vraiment pas destiné à être utilisé comme vous l'utilisez. Vous devez créer votre propre vue ou disposition personnalisée. Vous pouvez également utiliser un TableLayout.

10
Romain Guy