如何调整ratingbar中星星的大小
2013-11-25 22:57
176 查看
实验室引进了zwatch做开发,其中一个比较大的问题就是如何对240*240的小屏幕做屏幕适应。今天做睡眠跟踪中的睡眠质量评级,引进了特别喜欢的ratingbar,结果评级star太大,导致星星越界,最后一个星星直接超出了屏幕外。网上大致搜了三种方法,只有一种还是比较符合胃口的,在这里做一个简单的总结。一、属性值调整
<RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:isIndicator="true" android:maxWidth="30dp" android:maxHeight="30dp" android:soundEffectsEnabled="true" />按说这应该是最容易想到的方法。但是很遗憾,安卓开发工程师并没有为我们考虑的那么细致,标红的这两个属性完全不是我们想象中的那样把star调小为对应的尺寸,这两个属性和大多数控件的属性意思一样,仅仅是ratingbar整体的大小。坑爹的是,如果ratingbar整体变小了,star宁肯丢失也不会跟随整体而放大或缩小。这一点我认为platform新版本应该顺应民意!很不自然的属性。二、style调整代码还是上面的那个代码,唯一区别是加一行属性:
style="?android:attr/ratingBarStyleSmall"
这样做之后,星星真的变小了!看见星星变小的那一刻我tmd眼泪都出来了,这也忒小了吧!!
真是受不了,到手机上以后就是笔尖的大小。
三、自定义style
虽然耗费了一晚上完成这个实验,但是还是觉得学到了些东西。在尝试第三种方法之前,我看过了各种各样的帖子,都在询问怎么才能不自定义而后直接调用云云。很遗憾,一直找到最底层的platform的style,发现安卓只提供了StyleSmall和Style以及一个Indicator三种style,
style="?android:attr/ratingBarStyleSmall"style="?android:attr/ratingBarStyle"style="?android:attr/ratingBarStyleIndicator"大小都不满意。最后决定还是使用最麻烦的方法。
下面我就来讲讲如何制作自己的RatingBar样式。1、在res/data/style.xml文件中定义种样式:
<resources><style name="myratingbar"parent="@android:style/Widget.RatingBar.Small"><itemname="android:progressDrawable">@drawable/myratingbar</item><item name="android:minHeight">36dip</item><item name="android:maxHeight">36dip</item><style></resources>其中继承的父类可以选择RatingBar,RatingBar.Indicator,RatingBar.Small;大小可以自己定义。注意:RatingBar,RatingBar.Indicator,RatingBar.Small的不同点除了他们的显示大小不同以外,主要的还有Ratingbar中的IsIndicator属性是false,其他两种是true.该属性为false表示可以相应用的点击事件,通过这种方式可以和用户交互。
2、在res/drawable/myratingbar.xml文件指定不同图层的图片资源
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+android:id/background"android:drawable="@drawable/myratingbar_off" /><item android:id="@+android:id/secondaryProgress"android:drawable="@drawable/myratingbar_half" /><item android:id="@+android:id/progress"android:drawable="@drawable/myratingbar_on" /></layer-list>以上第三种方法源自网络,非原创,感谢原作者提供。设置完以上两个文件后,再在xml布局文件中设置@style/myratingbar就可以了。
另外一个小细节:一定要注意style要写成layer-list,就像上面这段代码,否则系统会不认!报设么错忘记了。。
相关文章推荐
- MFC如何使控件大小随着对话框大小自动调整
- Visio如何调整锁定图像大小
- 救助:windows2003的系统下,如何对分区大小进行重新调整,有什么工具能用吗?
- Ubuntu如何调整分区大小(wubi安装方式)
- Eclipse 如何调整java和xml文件字体大小
- CCS如何调整字体大小
- 关于如何调整虚拟磁盘大小的问题总结
- Mockplus:如何调整图标的大小和方向?
- Cocos_Lua如何调整模拟器大小以及分辨率
- Eclipse小知识——如何调整字体大小
- WINFORM如何禁止调整窗体大小
- windows 10 build 9926开始菜单如何实现可调整大小功能?
- MFC如何使控件大小随着对话框大小自动调整
- 如何理性的调整「rwnd」和「cwnd」的大小
- 如何正确调整上传附件大小限制
- 如何确定或调整undo表空间的大小
- 如何让一个iframe自动调整大小
- Android自定义View之自定义评价打分控件RatingBar实现自定义星星大小和间距
- 如何调整cell的大小
- 转载:chm格式的电子书如何调整字体大小