web-dev-qa-db-fra.com

Android CheckBox est difficile à exploiter

Quels sont les bons moyens de rendre le widget CheckBox plus facile à utiliser dans les applications Android? Dans mon application, les deux le CheckBoxet les choses derrière et à côté de -CheckBox sont utilisables, servant des fonctions distinctes. J'ai remarqué qu'il est difficile de cibler le CheckBox avec mon index, et j'ai des doigts fins.

Pour le contexte, ce CheckBox se trouve sur le côté droit d'un adaptateur ListView. Le côté gauche de l'élément a deux TextViews. ListView est une liste de courses; l'utilisateur appuie sur l'article dans la liste d'achats pour voir une description détaillée dans une boîte de dialogue, puis sur CheckBox pour marquer l'article comme acheté. Par conséquent, je ne peux pas simplement rendre l'élément entier utilisable pour basculer le CheckBox, car il n'y aurait aucun bon moyen d'afficher la boîte de dialogue de détail.

J'ai envisagé de créer une sorte de widget fantôme entourant le CheckBox, qui déclenche une bascule CheckBox, juste pour en faire une cible plus grande pour les doigts, mais est-ce une bonne conception d'interface utilisateur? Existe-t-il une solution de meilleures pratiques?

4
Jacob

Vous pouvez essayer d'utiliser un TouchDelegate pour augmenter la zone cliquable de la case à cocher elle-même. Vous pouvez trouver une réponse sur SO indiquant comment faire cela ici .

Copier-coller:

final View parent = (View) delegate.getParent();
parent.post( new Runnable() {
    // Post in the parent's message queue to make sure the parent
    // lays out its children before we call getHitRect()
    public void run() {
        final Rect r = new Rect();
        delegate.getHitRect(r);
        r.top -= 4;
        r.bottom += 4;
        parent.setTouchDelegate( new TouchDelegate( r , delegate));
    }
});
3
Jon O