Tôi tìm thấy một giải pháp dễ dàng hơn tôi nghĩ được đưa ra bởi những người ở trên và dễ dàng hơn là tự mình thực hiện. Tôi chỉ đơn giản là tạo một thanh đánh giá nhỏ, sau đó thêm một onTouchListener vào nó. Từ đó tôi tính chiều rộng của nhấp chuột và xác định số lượng sao từ đó. Đã sử dụng nhiều lần, điều khó hiểu duy nhất tôi tìm thấy là bản vẽ của một thanh xếp hạng nhỏ không phải lúc nào cũng bật ra ngay trong một bảng trừ khi tôi đặt nó trong linearLayout (trông đúng trong trình chỉnh sửa, nhưng không phải trên thiết bị) . Dù sao, trong bố trí của tôi:
<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>
và trong hoạt động của tôi:
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;
}
});
Tôi mong điều này giúp được người nào khác. Chắc chắn dễ dàng hơn việc tự vẽ một cái (mặc dù tôi thấy nó cũng hoạt động, nhưng tôi chỉ muốn sử dụng các ngôi sao dễ dàng).