带有白色小星星的评分条
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/),但我不确定如何调整样式以适应小外观。
你可以试试 drawable
<?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" />
这是 RatingBar 的简单示例。
自定义白色和灰色星星可以使用自定义主题并指定小尺寸,这样评级栏星星的大小将与默认的小尺寸主题相同。
您必须为自定义评分栏创建可绘制对象并确保评分栏的大小,因为此处评分栏的高度很重要lot.i意味着如果您的星图高度为 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" />
您可以为此目的使用 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"
/>
以下是我的评分栏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/),但我不确定如何调整样式以适应小外观。
你可以试试 drawable
<?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" />
这是 RatingBar 的简单示例。
自定义白色和灰色星星可以使用自定义主题并指定小尺寸,这样评级栏星星的大小将与默认的小尺寸主题相同。
您必须为自定义评分栏创建可绘制对象并确保评分栏的大小,因为此处评分栏的高度很重要lot.i意味着如果您的星图高度为 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" />
您可以为此目的使用 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"
/>