Encontrei uma solução mais fácil do que acho que foi dada pelos mencionados acima e mais fácil do que criar a sua própria. Eu simplesmente criei uma pequena barra de classificação e adicionei um onTouchListener a ela. A partir daí, calculo a largura do clique e determino o número de estrelas a partir disso. Depois de usar isso várias vezes, a única peculiaridade que encontrei é que o desenho de uma pequena barra de classificação nem sempre fica certo em uma tabela, a menos que eu o inclua em um LinearLayout (parece correto no editor, mas não no dispositivo) . Enfim, no meu layout:
<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>
e dentro da minha atividade:
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 isto ajude alguém. Definitivamente mais fácil do que desenhar (embora eu tenha achado que isso também funciona, mas eu só queria um uso fácil das estrelas).