不同设备上的RatingBar色差

时间:2016-10-07 09:06:24

标签: android xml ratingbar

我有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>

问题是这种风格由于某些原因而忽略了:

Nexus 5x API 24: enter image description here

Samsung S4 API 21:

enter image description here

我的活动是extends FragmentActivity问题可能在这里?怎么解决?

5 个答案:

答案 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>

结果:
1。在Nexus 5上 enter image description here 2。在三星S4 enter image description here

我不知道为什么会这样,但你可以得到你的结果。

答案 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" />

它对我来说很好......希望它也适合你