Una estrella RatingBar

Estoy tratando de mostrar una opinión RatingBar que sólo es capaz de mostrar una clasificación de una estrella, o no estrellas. Esto parece tan trivial …

Mi barra de calificación se define de la siguiente manera:

Mi vista implementa OnRatingBarChangeListener y OnTouchListener

Mi controlador OnRatingBarChange no tiene código. Mi controlador OnTouch se ve así:

@Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { if(this.mRating.getRating() == 0) { this.mRating.setRating(1); } else { this.mRating.setRating(0); } return true; } return false; } 

No importa qué, el evento onTouch no consigue establecer la clasificación de nuevo a cero. Esto parece demasiado trivial. ¿Qué estoy haciendo mal?

¡Gracias!

Considere el uso de ToggleButton y btn_star stock btn_star lugar. He aquí un ejemplo:

  <ToggleButton android:button="@android:drawable/btn_star" android:background="@android:color/transparent" android:textOn="" android:textOff="" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

El RatingBar se extiende desde el SeekBar y el oyente realmente espera una acción de diapositiva. Por lo tanto, el RB no se puede establecer en 0 (o no para este propósito) cuando sólo hay una estrella. El widget apropiado para usar para este tipo de funcionalidad (no es una sorpresa aquí) es el ToggleButton.

Tuve el mismo problema, tratando de usar una estrella única RatingBar como un botón favorito. Pero el ToggleButton es exactamente lo que usted necesita para este tipo de cosas.

Esto es lo que implementé para el ToggleButton. (El bool de _favourited fue utilizado específicamente para algo en mi código, no puedo recordar ahora)

 favourite_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!_favourited) { // Do stuff _favourited = true; } else { // Do stuff _favourited = false; } }}); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.