Я знайшов більш просте рішення, ніж я думаю, що це дано вище, і простіше, ніж прокат свого. Я просто створив невеликий рейтинг, а потім додав до нього onTouchListener. Звідти я обчислюю ширину клацання і визначаю кількість зірок від цього. Користуючись цим декількома разів, єдина примха, яку я виявив, - це те, що малювання невеликого рейтингового рядка не завжди виявляється правильним у таблиці, якщо я не додаю його до LinearLayout (виглядає прямо в редакторі, але не на пристрої) . У моєму макеті все одно:
<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>
і в межах моєї діяльності:
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;
}
});
Я сподіваюся, що це допомагає комусь іншому. Однозначно простіше, ніж малювати власне (хоча я виявив, що це також працює, але я просто хотів простого використання зірок).