我有RatingBar
<android.support.v7.widget.AppCompatRatingBar
android:id="@+id/rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:isIndicator="false"
android:numStars="5"
android:rating="0.0"
android:stepSize="1.0"
android:theme="@style/RatingBar"/>
和风格:
<style name="RatingBar" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/old_gray</item>
<item name="colorControlActivated">@color/yellow</item>
</style>
问题是这种风格由于某些原因而忽略了:
Samsung S4 API 21:
我的活动是extends FragmentActivity
问题可能在这里?怎么解决?
答案 0 :(得分:3)
从API 21及以上,您只需从xml更改
即可android:progressTint="@android:color/holo_red_dark"
android:progressBackgroundTint="@android:color/holo_red_dark"
android:secondaryProgressTint="@android:color/holo_red_dark"
答案 1 :(得分:1)
经过多次尝试,我得到了解决方案:
而不是使用android:theme="@style/RatingBar"
使用style="@style/RatingBar"
并使用
android:progressTint="yourColor"
android:progressBackgroundTint="@color/yourColor"
android:secondaryProgressTint="@color/yourColor"
用于评级栏中星形的填充,部分和空白颜色。它在两种设备中都可以正常工作。
你的风格应该是
<style name="RatingBar" parent="android:style/Widget.Material.RatingBar.Small">
<item name="colorControlNormal">@color/yourColor</item>
<item name="colorControlActivated">@color/yourColor</item></style>
答案 2 :(得分:0)
你想根据设备改变RatingBar的颜色,所以首先要找到设备的版本
int androidVersion = Integer.parseInt(android.os.Build.VERSION.RELEASE); 之后
Drawable drawable = ratingBar.getProgressDrawable(); drawable.setColorFilter(Color.parseColor(“#”+ androidVersion / Create_color_via_ androidVersion _with_the_help_of_Random_JAVA_class /),PorterDuff.Mode.SRC_ATOP);
答案 3 :(得分:0)
尝试为 colorControlNormal 和 colorControlActivated
提供相同的颜色<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="MyCustomRibbonTab" label="TEAM" keytip="la">
</tab>
</tabs>
</ribbon>
</customUI>
我不知道为什么会这样,但你可以得到你的结果。
答案 4 :(得分:-1)
public void setRatingBar(RatingBar ratingBar) {
LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable();
stars.getDrawable(2).setColorFilter(mContext.getResources().getColor(R.color.rating_yellow), PorterDuff.Mode.SRC_ATOP);
stars.getDrawable(0).setColorFilter(mContext.getResources().getColor(R.color.grey_text), PorterDuff.Mode.SRC_ATOP);
stars.getDrawable(1).setColorFilter(mContext.getResources().getColor(R.color.rating_yellow), PorterDuff.Mode.SRC_ATOP);
}
使用上述方法,并在将费率设置为评级栏之前将其设置为评级视图,如下所示。
setRatingBar(ratingView);
将此添加到styles.xml
<style name="RatingBar" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/grey_text</item>
<item name="colorControlActivated">@color/rating_yellow</item>
</style>
并将其设置为评级栏的主题
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:isIndicator="true"
android:numStars="5"
android:scaleX="0.5"
android:scaleY="0.5"
android:stepSize="1"
android:theme="@style/RatingBar" />
它对我来说很好......希望它也适合你