拖动条/滑动条控件、星级评分控件
程序员文章站
2022-04-14 15:29:42
ProgressBar有2个子控件: SeekBar 拖动条控件 RatingBar 星级评分控件 1、拖动条控件 也可以使用自定义的滑块: 说明: 并不会自动显示对应的刻度值。 滑块可以滑动,但没有事件响应。需要我们在.java文件中添加事件监听: 滑动滑块一次触发的事件: 最先开始时触发 onS ......
progressbar有2个子控件:
seekbar 拖动条控件
ratingbar 星级评分控件
1、拖动条控件
1 <seekbar 2 android:layout_width="300dp" 3 android:layout_height="wrap_content" 4 android:id="@+id/seekbar" 5 android:min="0" 6 android:max="100" 7 android:progress="50" /> <!--滑块默认位置-->
也可以使用自定义的滑块:
1 <seekbar 2 android:layout_width="300dp" 3 android:layout_height="100dp" 4 android:id="@+id/seekbar" 5 android:thumb="@drawable/a" <!--使用自定义的图片作为滑块--> 6 android:min="0" 7 android:max="100" 8 android:progress="50" />
说明:
并不会自动显示对应的刻度值。
滑块可以滑动,但没有事件响应。需要我们在.java文件中添加事件监听:
1 seekbar myseekbar=findviewbyid(r.id.seekbar); 2 myseekbar.setonseekbarchangelistener(new seekbar.onseekbarchangelistener() { 3 /* 4 三个形参: 5 seekbar seekbar 触发此事件/监听的seekbar 6 int progress 当前刻度值。 7 boolean fromuser 是否为用户拖动产生的响应,这个不常用 8 虽然settext(int x)可以设置int型的值,但这个int指的是 r.string.app_name 这样的常量值,不是整型数字。不能settext(progress)这样用,要先转换为string。 9 */ 10 11 //滑动滑块时触发 12 @override 13 public void onprogresschanged(seekbar seekbar, int progress, boolean fromuser) { 14 //判断改变的是否是指定的滑动条。预防当前activity对应的xml布局中有多个滑动条,如果只有一个滑动条,则不必判断 15 if (seekbar.getid()==r.id.seekbar){ 16 17 } 18 } 19 20 //滑动开始时触发 21 @override 22 public void onstarttrackingtouch(seekbar seekbar) { 23 if (seekbar.getid()==r.id.seekbar){ 24 25 } 26 } 27 28 //滑动停止时触发 29 @override 30 public void onstoptrackingtouch(seekbar seekbar) { 31 if (seekbar.getid()==r.id.seekbar){ 32 33 } 34 } 35 }); 36 }
滑动滑块一次触发的事件:
最先开始时触发 onstarttrackingtouch() ,滑动过程中一直触发 onprogresschanged(),最后停止时触发 onstoptrackingtouch()。
就是说滑动过程中会不停地触发 onprogresschanged() 。
2、星级评分控件
1 <ratingbar 2 android:layout_width="wrap_content" 3 android:layout_height="wrap_content" 4 />
总共默认5颗星,初始默认选择0颗星,默认可修改,默认步长为0.5,即可以点亮半颗星。也可手动设置:
1 <ratingbar 2 android:layout_width="wrap_content" 3 android:layout_height="wrap_content" 4 android:id="@+id/ratingbar" 5 android:isindicator="true" <!--是否可修改,true是不可修改,false是可修改,默认为fasle--> 6 android:numstars="7" <!--总星数--> 7 android:rating="5" <!--初始默认星数--> 8 android:stepsize="1" /> <!--步长-->
有时候只是向用户展示评分,并不需要用户评分,比如排行旁的xx指数,这时就需要设置 android:isindicator="true" 不可修改。
默认为false,可修改。
在.java文件中获取已点亮的星数:
1 ratingbar ratingbar=findviewbyid(r.id.ratingbar); 2 //获取已点的星数,因为步长可以为小数,所以获取到的是float 3 float rates=ratingbar.getrating();
在android中,几乎所有控件都提供了setxxx()、getxxx()方法供我们在.java文件中操作控件的属性。
上一篇: C语言数组截取常见问题
下一篇: input
推荐阅读
-
Android-高级UI组件-ProgressBar进度条组件-SeekBar拖动条组件-RatingBar星级评分组件
-
Android星级评分条控件RatingBar使用详解
-
Android中SeekBar拖动条控件使用方法详解
-
Android开发之拖动条/滑动条控件、星级评分控件功能的实例代码
-
Android星级评分条控件RatingBar使用详解
-
Android中SeekBar拖动条控件使用方法详解
-
Android自定义控件之可拖动控制的圆环控制条实例代码
-
Android开发之拖动条/滑动条控件、星级评分控件功能的实例代码
-
拖动条/滑动条控件、星级评分控件
-
Android自定义控件之可拖动控制的圆环控制条实例代码