2016-09-13 71 views
6

我有一個RatingBar的標準實現。 5星級,1級。Android RatingBar對某些設備有「壞」的門檻,修復?

<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}" 
/> 

我已經注意到,我有一些設備上,或者品牌的問題,實際上三星的Nexus,也許更多...但我沒有對索尼和LG的設備問題,也許更因爲在這裏好。

問題是,選擇一個值時的精度非常差。看起來如果我通過評分的中間可繪製它將填補下面的「明星」。這似乎是這些設備的門檻,這就是它的方式。他們的方式LG和索尼的行爲是,當你通過兩個「明星」之間的一半距離,然後它填補下一顆恆星。

那麼,有什麼我可以做的,以防止這種情況?

回答

1

據我所知,沒有辦法繞過它。

我是一個庫的創建者,它提供了Android默認RatingBar的替代方案:SimpleRatingBar,我們在一個issue中討論了這種行爲。

在庫中,我們修改了這個行爲,所以只有當至少1/4的星星被按下時纔會選擇一顆星。我相信這會改善使用它的整體體驗。

如果你想,你可以試試看。 它的特點:

  • 完全工作android:layout_width:它可以被設置爲wrap_contentmatch_parent或abritary DP。
  • 任意數量的星星。
  • 任意步長。
  • 恆星的大小可以精確控制或設置最大尺寸。
  • 正常狀態下的可自定義顏色(邊框,填充和星星和評級欄的背景)。
  • 按下狀態下的可自定義顏色(邊框,填充和星星和評級欄的背景)。
  • 星星之間可自定義尺寸分離。
  • 可定製的星星的邊框寬度。
  • 可自定義的星星角落半徑。
  • 允許設置OnRatingBarChangeListener
  • 星星填充可以設置爲從左到右或從右到左(RTL語言支持)開始。
  • AnimationBuilder集成在視圖中,以動畫方式編程設置評分。

Here is a preview of it

你可以找到它無論是在jcenterMaven Central。因此,在您build.gradle文件只是添加到您的依賴關係:

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

我希望它是有用的。