2016-09-13 20 views
6

Tôi có triển khai chuẩn là RatingBar. 5 sao, 1 trong bước.Android RatingBar có ngưỡng "xấu" cho một số thiết bị nhất định, sửa chữa?

<RatingBar 
    android:id="@+id/ratingBar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:numStars="5" 
    android:stepSize="1" 
    android:progressDrawable="@drawable/dark" 
    android:rating="@={viewModel.rating}" 
/> 

tôi đã nhận thấy rằng tôi có một vấn đề trên một số thiết bị, hoặc các thương hiệu thực sự: Samsung, Nexus, có thể nhiều hơn ... Nhưng tôi không có vấn đề về thiết bị Sony và LG, đây có thể nhiều hơn như tốt.

Vấn đề là độ chính xác khi chọn giá trị thực sự xấu. Nó có vẻ như nếu tôi vượt qua giữa các đánh giá-drawable nó sẽ điền vào "ngôi sao" sau đây. Nó có vẻ là ngưỡng cho những thiết bị đó và đó chỉ là con đường của nó. Họ theo cách mà LG và Sony ứng xử là khi bạn vượt qua một nửa khoảng cách giữa hai "ngôi sao", thì nó sẽ lấp đầy ngôi sao tiếp theo.

Vì vậy, tôi có thể làm gì để ngăn chặn điều này không?

Trả lời

1

Theo như tôi biết, không có cách nào xung quanh nó.

Tôi là người tạo thư viện cung cấp giải pháp thay thế cho RatingBar mặc định của Android: SimpleRatingBar và chúng tôi đã thảo luận về hành vi này trong một issue.

Trong thư viện, chúng tôi đã sửa đổi hành vi này để một ngôi sao sẽ chỉ được chọn nếu ít nhất 1/4 số được nhấn. Tôi tin rằng điều này cải thiện trải nghiệm tổng thể khi sử dụng nó.

Nếu bạn muốn, bạn có thể dùng thử. It features:

  • Hoàn toàn làm việc android:layout_width: nó có thể được thiết lập để wrap_content, match_parent hoặc abritary dp.
  • Số lượng sao tùy ý.
  • Kích thước bước tùy ý.
  • Kích thước của các ngôi sao có thể được kiểm soát chính xác hoặc bằng cách đặt kích thước tối đa.
  • Màu tùy chỉnh ở trạng thái bình thường (đường viền, tô màu và nền của các ngôi sao và thanh xếp hạng).
  • Màu tùy chỉnh ở trạng thái được nhấn (đường viền, tô màu và nền của dấu sao và thanh xếp hạng).
  • Phân tách kích thước có thể tùy chỉnh giữa các vì sao.
  • Chiều rộng đường viền tùy chỉnh của các ngôi sao.
  • Bán kính góc có thể tùy chỉnh.
  • Cho phép đặt OnRatingBarChangeListener
  • Điền dấu sao có thể được đặt để bắt đầu từ trái sang phải hoặc từ phải sang trái (hỗ trợ ngôn ngữ RTL).
  • AnimationBuilder được tích hợp trong chế độ xem để đặt xếp hạng theo chương trình với hoạt ảnh.

Here is a preview of it

Bạn có thể tìm thấy nó hoặc trong jcenter hoặc trong Maven Central. Vì vậy, trong tập tin build.gradle của bạn chỉ cần thêm vào phụ thuộc của bạn:

compile 'com.iarcuschin:simpleratingbar:0.1.+'

Tôi hy vọng nó hữu ích.

Các vấn đề liên quan