J'ai trouvé une solution plus facile que je pense donnée par celles ci-dessus et plus facile que de rouler votre propre. J'ai simplement créé une petite cote de la barre, puis ajouté un onTouchListener. À partir de là, j'ai calculer la largeur du clic et de déterminer le nombre d'étoiles à partir de cela. Après avoir utilisé plusieurs fois, la seule bizarrerie que j'ai trouvé c'est que le dessin d'une petite cote de bar ne pas toujours se transformer en une table à moins que j'ai placer dans un LinearLayout (regarde droit dans l'éditeur, mais pas l'appareil). De toute façon, dans ma mise en page:
<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>
et au sein de mon activité:
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;
}
});
J'espère que cela aide quelqu'un d'autre. Certainement plus facile que de dessiner son propre (bien que j'ai trouvé qui fonctionne aussi, mais je voulais juste une utilisation simple de stars).