Encontré una solución más fácil de lo que creo dada por las anteriores y más fácil que lanzar la suya. Simplemente creé una pequeña barra de calificación, luego le agregué un onTouchListener. A partir de ahí, calculo el ancho del clic y determino el número de estrellas a partir de eso. Después de haber usado esto varias veces, la única peculiaridad que he encontrado es que el dibujo de una pequeña barra de calificación no siempre aparece en una tabla a menos que lo incluya en un diseño lineal (se ve directamente en el editor, pero no en el dispositivo) . De todos modos, en mi diseño:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RatingBar
android:id="@+id/myRatingBar"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5" />
</LinearLayout>
y dentro de mi actividad:
final RatingBar minimumRating = (RatingBar)findViewById(R.id.myRatingBar);
minimumRating.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View view, MotionEvent event)
{
float touchPositionX = event.getX();
float width = minimumRating.getWidth();
float starsf = (touchPositionX / width) * 5.0f;
int stars = (int)starsf + 1;
minimumRating.setRating(stars);
return true;
}
});
Espero que esto ayude a alguien más. Definitivamente más fácil que dibujar el propio (aunque descubrí que eso también funciona, pero solo quería un uso fácil de las estrellas).