如何在不使用图像的情况下应用RatingBar边框?

时间:2016-01-21 19:26:50

标签: android android-layout android-xml ratingbar

我想创建一个RatingBar,不使用图片来设置边框。但我似乎无法做到这一点。

这就是我想要的样子:

with border

这是我得到的(填充 - 半空 - 空):

filled - half empty - empty

这是我的布局:

<RatingBar
    android:id="@+id/ratingbar_rate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:numStars="5"
    android:rating="2.5"
    android:stepSize="0.5"
    android:scaleX="3.5"
    android:scaleY="3.5"
    style="?android:attr/ratingBarStyleIndicator"
    android:isIndicator="false"
    android:progressTint="@color/star"
    android:progressBackgroundTint="@color/star_border"
    android:secondaryProgressTint="@color/star_partially_empty"
    android:backgroundTint="@color/star_partially_empty"
/>

2 个答案:

答案 0 :(得分:1)

可能是这些额外的库中的任何一个:http://android-arsenal.com/tag/84

会为你做一件令人讨厌的工作。请注意,其中一些不使用图像。

希望有所帮助

答案 1 :(得分:0)

好的,所以我使用了自定义的可绘制layer-list,Android就是其余的。

我的RatingBar

<RatingBar
    android:id="@+id/ratingbar_rate"
    style="@style/rateUsBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:numStars="5"
    android:rating="0"
    android:stepSize="1"
    android:layout_gravity="center"
/>

styles.xml

<resources>
    ...
    ...
    <style name="rateUsBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/rating_stars</item>
        <item name="android:minHeight">@dimen/rate_us_star_minheight</item>
        <item name="android:maxHeight">@dimen/rate_us_star_maxheight</item>
    </style>
</resources>

rating_stars.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@android:id/background"
        android:drawable="@drawable/rate_empty" /> //gray star for empty
    <item
        android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/rate_empty" /> //gray star for empty
    <item
        android:id="@android:id/progress"
        android:drawable="@drawable/rate_filled" /> //yellow star for filled
</layer-list>

dimens.xml

<resources>
    ...
    ...
    <dimen name="rate_us_star_minheight"> <!--height of your image--> </dimen>
    <dimen name="rate_us_star_maxheight"> <!--height of your image--> </dimen>
</resources>

那就是它!