繁体   English   中英

带有白色小星星的RatingBar

[英]RatingBar with small white stars

以下是我的评分栏的xml。

<RatingBar
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="?android:attr/ratingBarStyleSmall"
                android:numStars="5"
                android:isIndicator="true"
                android:stepSize="0.5"
                android:rating="4.5"/>

我对它的大小感到满意,但我希望星星在灰色的背景上呈白色(白色为实心,灰色为空)。

我正在看本教程( http://www.materialdoc.com/rating-bar/ ),但是我不确定如何使样式适应小外观。

您可以尝试绘制

    <?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/star_off" />

     <item android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/star_off" />

     <item android:id="@android:id/progress"
        android:drawable="@drawable/star_on" />

    </layer-list>

<RatingBar
        android:id="@+id/ratingBar2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:progressDrawable="@drawable/custom_ratingbar_selector"
        android:isIndicator="true"
                android:stepSize="0.5"
                android:rating="4.5" />

您可以为此使用progressTint

  <RatingBar
                        android:id="@+id/vendorRatingBarValue"
                        style="?android:attr/ratingBarStyleSmall"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_alignRight="@+id/reviewerName"
                        android:clickable="false"
                        android:gravity="left|center"
                        android:isIndicator="true"
                        android:numStars="5"
                        android:progressTint="@color/white"

                        android:transformPivotX="0dp"

                        />

您将需要使用属性

android:backgroundTint="@color/grey"

android:progressTint="@color/white"

所以..

<RatingBar
    android:id="@+id/rb_doctor"
    style="?android:attr/ratingBarStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:backgroundTint="@color/grey"
    android:numStars="5"
    android:progressTint="@color/white"
    android:rating="0"
    android:secondaryProgressTint="@color/white"
    android:stepSize="1.0" 
/>

这是RatingBar的简单示例。

为此,可以使用自定义主题使用自定义的白色和灰色星形,并指定较小的尺寸,因此评分栏星形的尺寸将与默认的较小尺寸的主题相同。

您必须为自定义评级栏创建drawable,并确保评级栏的大小,因为评级栏的高度非常重要。我的意思是,如果您的星级图片的尺寸为13dp高度,而评级栏的高度为17dp高度,则它将拉伸等级栏,因此请确保高度。

这是如何为评级栏创建自定义选择器的简单示例。

明星抽奖

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true" android:state_window_focused="true" android:drawable="@drawable/ic_star_empty_small" /> 
  <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/ic_star_empty_small" /> 
  <item android:state_selected="true" android:state_window_focused="true" android:drawable="@drawable/ic_star_empty_small" /> 
  <item android:drawable="@drawable/ic_star_empty_small" /> 
  </selector>

评级栏样式

<style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
  <item name="android:progressDrawable">@drawable/inf_full_ratingbar</item> 
  <item name="android:minHeight">20dip</item> 
  <item name="android:width">20dip</item> 
  <item name="android:height">20dip</item> 
  <item name="android:maxHeight">20dip</item> 
  </style>

然后使用自定义样式进行评分,例如:

     <RatingBar
            android:id="@+id/ratingBarFlight"
            style="@style/StarRatingBar"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/rating_bar_height"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="@dimen/library_screen" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM