Jam*_*ing 19 android android-layout ratingbar
所以我创建了一个带有新图标的评级栏,但是,当我实现它时,星星看起来像是在流血,请参阅附件:
以下是样式,评级xml以及它们在布局中的实现方式:
样式:
<style name="GoldRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:indeterminateOnly">false</item>
<item name="android:progressDrawable">@drawable/gold_ratingbar</item>
<item name="android:indeterminateDrawable">@drawable/gold_ratingbar</item>
<item name="android:thumb">@null</item>
<item name="android:isIndicator">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
评级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/rating_star_icon_off" />
<item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/rating_star_icon_half" />
<item android:id="@+android:id/progress" android:drawable="@drawable/rating_star_icon" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)
布局:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="Overall rating"
android:textSize="16sp"
android:textStyle="bold" />
<RatingBar
android:id="@+id/review_overall_rating"
style="@style/GoldRatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dp"
android:layout_marginLeft="6dp"
android:rating="3" />
<TextView
android:id="@+id/review_rating_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text=""
android:textStyle="bold" />
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到我哪里出错了?
小智 22
我有一个类似的情况,并且接受的答案将无法在所有屏幕尺寸上解决它实际上解决方案非常简单,您只需要在.png图像中添加填充,使用"每边2个透明像素"
因为机器人正在重复你的星形图像的最后一行所以只是让这一行变得透明
对于所有仍在寻找答案且不想裁剪图像的人:android:minHeight="0dp"
帮助我
更新。为什么有效?好吧,大多数视图组件都有一个默认的最小尺寸来遵循可访问性/可用性谷歌指南。正如所提到的,似乎RatingBar
试图minHeight
通过重复最后 1-2 个像素来填充空白空间(您自己的资源和 之间的差异)(我个人不明白这种决定的原因)。因此,通过设置android:minHeight="0dp"
,RatingBar
将按资源的高度包装内容。
我也面临着同样的问题。
在我的情况下,blank_star.png
身高是17dp,所以我穿上android:layout_height="17dp"
了RatingBar
,我的问题解决了。尝试下面的代码:-
<RatingBar
android:id="@+id/rating"
style="@style/rating_bar"
android:layout_width="wrap_content"
android:layout_height="17dp"
android:layout_marginRight="5dp"
android:isIndicator="true"
android:numStars="5"
android:stepSize="1.0" />
Run Code Online (Sandbox Code Playgroud)
样式/rating_bar.xml
<style name="rating_bar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/rating_bar_full</item>
<item name="android:minHeight">18dip</item>
<item name="android:maxHeight">18dip</item>
</style>
Run Code Online (Sandbox Code Playgroud)
drawable / rating_bar_full
<?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/ratingbar_full_empty"/>
<item
android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/ratingbar_full_empty"/>
<item
android:id="@+android:id/progress"
android:drawable="@drawable/ratingbar_full_filled"/>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
drawable / ratingbar_full_empty
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/blank_star" android:state_pressed="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/blank_star" android:state_focused="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/blank_star" android:state_selected="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/blank_star"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
drawable / ratingbar_full_filled.xml
<item android:drawable="@drawable/filled_star" android:state_pressed="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/filled_star" android:state_focused="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/filled_star" android:state_selected="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/filled_star"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4308 次 |
最近记录: |