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


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"

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

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.