Android: no se puede hacer clic ni tocar la barra de clasificación en el móvil HTC

94

Mi aplicación tiene barras de clasificación. Quiero configurar la barra de clasificación para que no se pueda hacer clic ni se pueda tocar. Para esto agregué el siguiente código en el xmlarchivo de cada barra de calificación.

Está funcionando en Samsung Galaxy Apollo GT-i5801. Pero no funciona en el móvil HTC. ¿Por qué?

código xml

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

Gracias

naresh
fuente
1
¿Lo ha probado en codificación como esta rating.setClickable (false);
Andro Selva
No. ¿Pero hay alguna diferencia (xml y parte de código)?
Naresh
No estoy seguro. Pero todavía no lo he probado en xml. lo siento
Andro Selva

Respuestas:

332

También puede configurar RatingBar como indicador del xml con lo siguiente:

android:isIndicator="true"
Andy
fuente
4
esta es la mejor solución si está usando esto en la vista de lista.
AlbertRosa
solución perfecta
Slobodan Antonijević
Funciona pero no puedes cambiar las calificaciones. es decir, android: rating = "4" no funcionará. Siempre será 5.
Vishal
@Vishal bien puede ser el caso; muchas cosas cambian en 8 años. Ya no estoy trabajando en Android, pero por lo que recuerdo, había una manera de establecer la calificación. Probablemente de código en lugar de XML.
Andy
@Andy - Estoy de acuerdo, acabo de publicar mi comentario para referencia de otros desarrolladores. Si uno necesita deshabilitar la barra de calificación con el indicador de calificación como 4, entonces debería ser algo como android: rating = "4" y setOnTouchListener debe anularse para el indicador.
Vishal
19

Esto es lo que escribe este código en su setOnRatingBarChangeListener

ratingaddrate.setIsIndicator(true);

Actualización:

Puedes usar este ejemplo en tu XML

android:isIndicator="true"

también agregue esta línea al código

ratingBar.setFocusable(false);
alireza amini
fuente
18

No establezca habilitado como falso, ya que esto atenuará el control. Lo que quiere hacer es anular el oyente táctil de esta manera:

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;
        }
    });

Así que básicamente interceptas el toque y no haces nada con él.

También agregue el siguiente código para bloquear las vueltas de la bola de seguimiento

ratingBar.setFocusable(false);
Ryan C
fuente
7
Aunque escribí esta respuesta y funciona, me gusta más la respuesta de Andy a continuación
Ryan C
4
android: isIndicator = "true" es la solución adecuada
dirkoneill
RESPUESTA INCORRECTA. La forma correcta es: android: isIndicator = "true" (XML) o setIsIndicator (false) // CÓDIGO
Sileria