ProgressBar有2个子控件:
SeekBar 拖动条控件
RatingBar 星级评分控件
1、拖动条控件
1 <SeekBar2 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 <SeekBar2 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 @Override13 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 @Override22 public void onStartTrackingTouch(SeekBar seekBar) {23 if (seekBar.getId()==R.id.seekBar){24 25 }26 }27 28 //滑动停止时触发29 @Override30 public void onStopTrackingTouch(SeekBar seekBar) {31 if (seekBar.getId()==R.id.seekBar){32 33 }34 }35 });36 } 滑动滑块一次触发的事件:最先开始时触发 onStartTrackingTouch() ,滑动过程中一直触发 onProgressChanged(),最后停止时触发 onStopTrackingTouch()。就是说滑动过程中会不停地触发 onProgressChanged() 。 2、星级评分控件1 RatingBar2 android:layout_width="wrap_content"3 android:layout_height="wrap_content"4 /> 总共默认5颗星,初始默认选择0颗星,默认可修改,默认步长为0.5,即可以点亮半颗星。也可手动设置: 1 RatingBar2 android:layout_width="wrap_content"3 android:layout_height="wrap_content"4 android:id="@+id/ratingBar"5 android:isIndicator="true" >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 //获取已点的星数,因为步长可以为小数,所以获取到的是float3 float rates=ratingBar.getRating();
在Android中,几乎所有控件都提供了setXxx()、getXxx()方法供我们在.java文件中操作控件的属性。