Saya menemukan solusi yang lebih mudah daripada yang saya pikirkan diberikan oleh yang di atas dan lebih mudah daripada menggulung solusi Anda sendiri. Saya hanya membuat bar peringkat kecil, lalu menambahkan onTouchListener padanya. Dari sana saya menghitung lebar klik dan menentukan jumlah bintang dari itu. Setelah menggunakan ini beberapa kali, satu-satunya kekhasan yang saya temukan adalah bahwa gambar bilah peringkat kecil tidak selalu muncul tepat di tabel kecuali saya melampirkannya dalam LinearLayout (terlihat tepat di editor, tetapi tidak perangkatnya) . Bagaimanapun, dalam tata letak saya:
<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>
dan dalam aktivitas saya:
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;
}
});
Saya harap ini membantu orang lain. Jelas lebih mudah daripada menggambar sendiri (meskipun saya telah menemukan itu juga berfungsi, tetapi saya hanya ingin penggunaan bintang yang mudah).