我有我的應用程序自定義的RatingBar應該爲電影顯示任一網站的平均得分或用戶的評價,而在用戶評分。顏色應根據所顯示的評分是網站平均值還是用戶評分而改變。上的RatingBar調用getProgressDrawable()只顯示一個星
具體的過程: 用戶觀點的電影。顯示電影的網站平均評分。爲的RatingBar
佈局代碼:
<RatingBar android:id="@+id/ratingBar" android:isIndicator="true"
android:layout_margin="10dip" style="@style/RatingBar"
android:progressDrawable="@drawable/site_rating_bar" android:stepSize="0.1" />
的RatingBar風格:
<style name="RatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:numStars">10</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:minHeight">30dip</item>
<item name="android:maxHeight">30dip</item>
</style>
site_rating_bar.xml:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background"
android:drawable="@drawable/btn_rating_star_off" />
<item android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/btn_rating_star_off" />
<item android:id="@+android:id/progress"
android:drawable="@drawable/btn_site_rating_star_on" />
</layer-list>
用戶可以在點擊的RatingBar並彈出一個對話框他們可以在這裏添加他們自己的電影自定義評級。在關閉對話框後,代碼會更新上面評級欄中顯示的評級。我還想更改ProgressDrawable,以便星星的顏色發生變化,以指示用戶添加了自定義評分。
但是,當我嘗試設置ProgressDrawable編程它更新它,所以它顯示正確的顏色,但它只是顯示一個明星,在屏幕拉伸。
ratingBar.setProgressDrawable(thisActivity.getResources().getDrawable(R.drawable.user_rating_bar));
user_rating_bar.xml:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background"
android:drawable="@drawable/btn_rating_star_off" />
<item android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/btn_rating_star_off" />
<item android:id="@+android:id/progress"
android:drawable="@drawable/btn_user_rating_star_on" />
</layer-list>
我試過保存原始邊界和重置他們,但它並沒有幫助:
Rect bounds = ratingBar.getProgressDrawable().getBounds();
ratingBar.setProgressDrawable(thisActivity.getResources().getDrawable(R.drawable.user_rating_bar));
ratingBar.getProgressDrawable().setBounds(bounds);
還試圖重新在numStars它已經迷路了。
任何想法不勝感激。 TIA。 :)
從文檔的RatingBar:「二級進步不應該由客戶端,因爲它是內部使用,作爲背景的分數充滿明星修改。」 – greg7gkb