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

Naresh
la source
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"
Andy
la source
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);
alireza amini
la source
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);
Ryan C
la source
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