我在我的應用程序中使用自定義樣式,使用自己的星星做了評級欄。Android評分欄不更新
我的RatingBar定義如下:
<RatingBar
android:layout_width="wrap_content"
android:layout_height="15dp"
android:id="@+id/ratingBar"
android:numStars="10"
android:stepSize="1"
android:rating="10"
android:layout_marginTop="5dp"
android:layout_below="@id/feedbackTable"
android:layout_toRightOf="@id/ratingText"
android:layout_marginLeft="5dp"
style="@style/starBar" />
我在styles.xml選用的風格是:
<style name="starBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratingstars</item>
<item name="android:minHeight">22dip</item>
<item name="android:maxHeight">22dip</item>
</style>
隨着ratingstars.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/background" android:drawable="@drawable/ratingstars_full_empty" />
<item android:id="@+id/secondaryProgress" android:drawable="@drawable/ratingstars_full_empty" />
<item android:id="@+id/progress" android:drawable="@drawable/ratingstars_full_filled" />
</layer-list>
當我調整android:rating,它會顯示正確的星星數量,並在預覽中爲空。但是,使用我的仿真器或真實設備,酒吧會保持星星完全充滿(10/10)。我試着用下面的代碼編程調整它:
ratingbar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
Log.d("rating", rating+"");
ratingbar.setRating(rating);
}
});
現在從logcat的日誌實際上表明,評級發生變化,但酒吧沒有視覺本身例如更新6星滿,4空,我不知道爲什麼。
由於預覽也顯示它正確,所以drawables是正確的,那麼會導致這種情況的原因是什麼?
編輯:
這是ratingstars_full_filled.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:state_window_focused="true"
android:drawable="@drawable/star" />
<item android:state_focused="true"
android:state_window_focused="true"
android:drawable="@drawable/star" />
<item android:state_selected="true"
android:state_window_focused="true"
android:drawable="@drawable/star" />
<item android:drawable="@drawable/star" />
</selector>
這裏是ratingstars_full_empty.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:state_window_focused="true"
android:drawable="@drawable/star_empty" />
<item android:state_focused="true"
android:state_window_focused="true"
android:drawable="@drawable/star_empty" />
<item android:state_selected="true"
android:state_window_focused="true"
android:drawable="@drawable/star_empty" />
<item android:drawable="@drawable/star_empty" />
</selector>
「現在從logcat的日誌實際上表明,評級發生變化,但酒吧沒有視覺本身例如6星充滿更新,和4個空的,我不知道爲什麼。」 ======>這意味着您可能無法正確更新評分欄。因此,您只需檢查代碼欄等級是否在您所需的代碼區域內正確更改! – sai
不應該在ratingstars.xml中以'@android:id'而不是'@ + id'開頭? –
不,因爲它是ID的xml文件中的第一次出現 – Gooey