widgets之RatingBar

Android官方文档中对于RatingBar的解释为:

A RatingBar is an extension of SeekBar and ProgressBar that shows a rating in stars. The user can touch/drag or use arrow keys to set the rating when using the default size RatingBar. The smaller RatingBar style (android.R.attr#ratingBarStyleSmall) and the larger indicator-only style (android.R.attr#ratingBarStyleIndicator) do not support user interaction and should only be used as indicators

它是对ProgressBar和SeekBar的一种扩展,可以用星星显示评价级别,用户可以拖动这个图标或者使用方向键左右的滑动。

先看一下它的集成关系:

java.lang.Object
  继承者 android.view.View
      继承者 android.widget.ProgressBar
          继承者 android.widget.AbsSeekBar
              继承者 android.widget.RatingBar
从这里也可以看出它是ProgressBar的一个子类,自然它的使用方法也和ProgressBar差不多。

<RatingBar android:id="@+id/ratingBar02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:numStars="5"/>

效果如下:


自带半颗星的效果:


使用方法如下:


 这里有一件事情需要注意:就是如果你的layout_width="wrap_content",如果你设置成fill_parent,那么显示的星星个数不一定是5个,笔者刚开始就是向上面一样,改了参数后是以下的效果: 
 

在看一下监听里的参数:

rb.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
			
			@Override
			public void onRatingChanged(RatingBar arg0, float arg1, boolean arg2) {
				// TODO Auto-generated method stub
				if(arg2){
					Toast.makeText(MainActivity.this, "你选择了"+arg1+"颗星评价", 4444).show();
				}
			}
		});



 其中第2个参数表示的是你选中了几颗星,这里一定要在上面的xml文件中用android:numStars来声明有几个星,不然这个返回的参数是不准确的。 
 

你可能感兴趣的:(widgets之RatingBar)