Android - Comment définir la barre de notation n'est pas cliquable et tactile dans HTC mobile


94

Mon application a des barres de notation. Je souhaite que la barre de notation ne soit ni cliquable ni palpable. Pour cela, j'ai ajouté le code suivant dans le xmlfichier de chaque barre de notation.

Il fonctionne dans Samsung Galaxy Apollo GT-i5801. Mais cela ne fonctionne pas dans le mobile HTC. Pourquoi?

code xml

android:clickable="false"     
android:focusableInTouchMode="false"    
android:focusable="false"

Merci


1
l'avez-vous essayé dans un codage comme celui-ci rating.setClickable (false);
Andro Selva

Non. Mais y a-t-il des diff (partie xml et code)?
naresh

Pas certain. Mais je ne l'ai pas encore essayé en xml. désolé
Andro Selva

Réponses:


332

Vous pouvez également définir la RatingBar comme indicateur à partir du XML avec les éléments suivants:

android:isIndicator="true"

4
c'est la meilleure solution si vous l'utilisez dans la vue de liste.
AlbertRosa

solution parfaite
Slobodan Antonijević

Cela fonctionne mais vous ne pouvez pas changer les notes. ie android: rating = "4" ne fonctionnera pas. Ce sera toujours 5.
Vishal le

@Vishal cela peut très bien être le cas; beaucoup de choses changent en 8 ans. Je ne travaille plus sur Android, mais d'après ce que je me souviens, il y avait un moyen de définir la note. Probablement à partir de code au lieu de XML.
Andy le

@Andy - Je suis d'accord, je viens de publier mon commentaire pour la référence d'autres développeurs. Si l'on doit désactiver la barre de notation avec l'indicateur de notation 4, alors cela devrait être quelque chose comme android: rating = "4" et setOnTouchListener doit être remplacé pour l'indicateur.
Vishal le

19

C'est ça, écrivez ce code dans votre setOnRatingBarChangeListener

ratingaddrate.setIsIndicator(true);

Mettre à jour :

Vous pouvez utiliser cet exemple dans votre XML

android:isIndicator="true"

ajoutez également cette ligne au code

ratingBar.setFocusable(false);

18

Ne définissez pas enabled sur false car cela atténuera le contrôle. Ce que vous voulez faire est de remplacer l'écouteur tactile comme ceci:

import android.view.View.OnTouchListener;

RatingBar ratingBar = (RatingBar)findViewById(R.id.ratingBar);
ratingBar.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }
    });

Donc, fondamentalement, vous interceptez le toucher et ne faites rien avec

Ajoutez également le code suivant pour bloquer les rollovers de trackball

ratingBar.setFocusable(false);

7
Même si j'ai écrit cette réponse et que cela fonctionne, j'aime mieux la réponse d'Andy ci
Ryan C

4
android: isIndicator = "true" est la bonne solution
dirkoneill

MAUVAISE RÉPONSE. La méthode correcte est: android: isIndicator = "true" (XML) ou setIsIndicator (false) // CODE
Sileria
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.