RatingBar无法缩放到想要的大小怎么办?
前语
在实际android开发中,用户点评页面有滑动点亮星星⭐的组件,之前没有做过这种,于是上网搜有没有Android自带的滑动评分组件,发现真的有,叫RatingBar,在了解特点后就直接用了,发现仍然存在个大问题。。。
RatingBar介绍
RatingBar是根据SeekBar和ProgressBar的扩展,用星型来显示等级鉴定。
运用RatingBar的默许大小时,用户可以接触/拖动或运用键来设置评分。
特点
android:isIndicatorRatingBar
是否为指示器,为true时,用户将无法交互操作,默许为false。
android:numStars
显示星星⭐的数量,必须是整形。
android:rating
设置默许的评分。
android:stepSize
评分每次添加的值。
款式
其中内置了三个款式:
<!-- 小款式 -->
<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stepSize="1.0"
android:numStars="5"
android:rating="1.0"
style="@style/Widget.AppCompat.RatingBar.Small"/>
<!-- 默许款式 -->
<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stepSize="1.0"
android:numStars="5"
android:rating="1.0"
style="@style/Widget.AppCompat.RatingBar"/>
<!-- 指示器款式 -->
<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stepSize="1.0"
android:numStars="5"
android:rating="1.0"
style="@style/Widget.AppCompat.RatingBar.Indicator"/>
效果图
可以发现 给的三个款式大的太大 小的又太小 于是测验修正组件的长宽 但发现星星不会跟长宽的修正而缩放 反而会产生显示不全的问题 我哭了
网上也有自定义style的方法 我也测验着跟着步骤操作过 但没有成功 出来个四不像 最终无法上网寻找开源库运用。如果有自定义style成功的宝子 可以私信我 教教我❤
引进MaterialRatingBar开源库
GitHub地址: GitHub – zhanghai/MaterialRatingBar: Material Design RatingBar with better appearance
什么是MaterialRatingBar?
大致意思是:
- 在 Android 3.0以上保持一致的外观。
- 扩展RatingBar框架。
- 获取 2dp 星形边框布景。
- 跨平台更正自定义着色。
- 当layout_width设置为match_parent时可以正确呈现。
- 当layout_height设置为 16dp、36dp 和 48dp 以外的值时,可以正确缩放。
- 可以正确显示诸如 4.3 之类的评级,因为框架的过错实现,该评级将被填充为 4.5。
- 避免框架的下沉半星视觉毛病。
- 用作RatingBar框架的直接替代品。
特点
- 处理了原生RatingBar无法缩放的问题
- 供给了很多款式挑选,可操作性强
运用方式
1. 导入依赖
implementation 'me.zhanghai.android.materialratingbar:library:1.4.0'
2. 用例XML
<me.zhanghai.android.materialratingbar.MaterialRatingBar
android:id="@+id/comment_score"
style="@style/Widget.MaterialRatingBar.RatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="27dp"
android:numStars="5"
android:stepSize="1"
app:mrb_fillBackgroundStars="true"
app:mrb_progressBackgroundTint="@color/star_off"
app:mrb_progressTint="@color/star_on" />
3. 特点
-
app:mrb_fillBackgroundStars
— 来操控是否填充布景星星,默许为false。 -
app:mrb_progressBackgroundTint
— 操控星星的布景色彩。 -
app:mrb_progressTint
— 操控星星色彩。
4. 运用方法
和RatingBar一样
//滑动监听
binding.commentScore.setOnRatingBarChangeListener { _, rating, _ ->
commentViewModel.score = rating.toInt()
commentViewModel.onCheckType()
}
//滑动分数
binding.commentScore.rating
总结
以上便是我在处理点评页面滑动点亮星星时所遇到的问题和处理办法。虽然运用MaterialRatingBar开源库处理了问题,但对其实现原理还不是很清楚,这也是我未来需求学习的当地,文章若呈现过错,欢迎各位批评指正,文章乃原创,转载请注明出处谢谢❤。