【发布时间】:2015-05-23 15:19:16
【问题描述】:
我正在开发一个使用自定义 RatingBar 的 Android 应用。我遵循了一个教程 (http://kozyr.zydako.net/2010/05/23/pretty-ratingbar/),但是当我使用我的自定义样式时,它总是显示我 5 星,即使我强制 RatingBar 为一个值(例如 3 星)。我在网上用其他一些教程进行了验证,但它并没有改变任何东西..
我的文件:
custom_ratingbar_full.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/custom_ratingbar_full_empty" />
<item android:id="@+id/secondaryProgress"
android:drawable="@drawable/custom_ratingbar_full_empty" />
<item android:id="@+id/progress"
android:drawable="@drawable/custom_ratingbar_full_filled" />
</layer-list>
custom_ratingbar_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_off" />
<item android:state_focused="true"
android:state_window_focused="true"
android:drawable="@drawable/star_off" />
<item android:state_selected="true"
android:state_window_focused="true"
android:drawable="@drawable/star_off" />
<item android:drawable="@drawable/star_off" />
</selector>
custom_ratingbar_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_full" />
<item android:state_focused="true"
android:state_window_focused="true"
android:drawable="@drawable/star_full" />
<item android:state_selected="true"
android:state_window_focused="true"
android:drawable="@drawable/star_full" />
<item android:drawable="@drawable/star_full" />
</selector>
styles.xml
<style name="CustomRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/custom_ratingbar_full</item>
<item name="android:minHeight">48dip</item>
<item name="android:maxHeight">48dip</item>
</style>
my_fragment.xml
...
<RatingBar
android:id="@+id/rating_bar"
style="@style/CustomRatingBar"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:isIndicator="true"
android:layout_marginBottom="10dp"
android:visibility="invisible" />
...
有什么解释吗?我已经搜索了我做错了什么,但我没有找到它..
编辑:
我如何设置我的评分值:
我在 Fragments 之间发送一个包
myRating = bundle.getInt("rating");
我检索到 RatingBar:
RatingBar ratingBar = (RatingBar) rootView.findViewById(R.id.rating_beer);
最后我测试了是否显示评分栏的值:
if (beerRating != 0) {
ratingBar.setRating(myRating);
ratingBar.setVisibility(View.VISIBLE);
Toast.makeText(getActivity(), "Rating : " + myRating, Toast.LENGTH_LONG).show();
}
我已经验证了我的价值,但它没有显示正确的星数。但是,如果我从评分栏中删除我的自定义样式,它就会起作用。
编辑 2 解决方案:
最后我找到了解决方案:我已将标签@+android:id 替换为@+id,这就是它不起作用的原因。
【问题讨论】:
-
你能贴出你为评级栏分配评级的代码吗?
-
我已经更新了我的帖子
-
教程中的@Azuken 你提到没有“@+android:id”,我也有同样的问题,但找不到解决办法。你是怎么做到的?
-
在教程中,标签写成
@+android:id,我的IDE显示这个lika错误,所以我替换了它们。但是你必须像教程中所说的那样编写才能让你的应用正常运行 -
我已经像教程中那样做了:stackoverflow.com/questions/32208154/…
标签: android android-styles ratingbar