RatingBar评分条

一、概述

    RatingBar是SeekBar和ProgressBar的扩展,用星星来评级。使用的默认大小RatingBar时,用户可以触摸/拖动或使用键来设置评分,它有俩种样式(大、小),其中大的只适合指示,不适合于用户交互。

二、实例

1.布局文件

View Code
 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:paddingLeft="10dip"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent">
7 <RatingBar android:id="@+id/ratingbar1"
8 android:layout_width="wrap_content"
9 android:layout_height="wrap_content"
10 android:numStars="3"
11 android:rating="2.5" />
12 <RatingBar android:id="@+id/ratingbar2"
13 android:layout_width="wrap_content"
14 android:layout_height="wrap_content"
15 android:numStars="5"
16 android:rating="2.25" />
17 <LinearLayout
18 android:layout_width="match_parent"
19 android:layout_height="wrap_content"
20 android:layout_marginTop="10dip">
21
22 <TextView android:id="@+id/rating"
23 android:layout_width="wrap_content"
24 android:layout_height="wrap_content" />
25
26 <RatingBar android:id="@+id/small_ratingbar"
27 style="?android:attr/ratingBarStyleSmall"
28 android:layout_marginLeft="5dip"
29 android:layout_width="wrap_content"
30 android:layout_height="wrap_content"
31 android:layout_gravity="center_vertical" />
32
33 </LinearLayout>
34 <RatingBar android:id="@+id/indicator_ratingbar"
35 style="?android:attr/ratingBarStyleIndicator"
36 android:layout_marginLeft="5dip"
37 android:layout_width="wrap_content"
38 android:layout_height="wrap_content"
39 android:layout_gravity="center_vertical" />
40
41 </LinearLayout>



2.Java代码 

View Code
 1 package wjq.WidgetDemo;
2 import android.app.Activity;
3 import android.os.Bundle;
4 import android.widget.RatingBar;
5 import android.widget.TextView;
6 import android.widget.RatingBar.OnRatingBarChangeListener;
7 public class RatingBarDemo extends Activity implements
8 OnRatingBarChangeListener {
9 private RatingBar mSmallRatingBar;
10 private RatingBar mIndicatorRatingBar;
11 private TextView mRatingText;
12 /*
13 * (non-Javadoc)
14 *
15 * @see android.app.Activity#onCreate(android.os.Bundle)
16 */
17 @Override
18 protected void onCreate(Bundle savedInstanceState) {
19 // TODO Auto-generated method stub
20 super.onCreate(savedInstanceState);
21 setContentView(R.layout.ratingbarpage);
22
23 mRatingText = (TextView) findViewById(R.id.rating);
24 // We copy the most recently changed rating on to these indicator-only
25 // rating bars
26 mIndicatorRatingBar = (RatingBar) findViewById(R.id.indicator_ratingbar);
27 mSmallRatingBar = (RatingBar) findViewById(R.id.small_ratingbar);
28
29 // The different rating bars in the layout. Assign the listener to us.
30 ((RatingBar)findViewById(R.id.ratingbar1)).setOnRatingBarChangeListener(this);
31 ((RatingBar)findViewById(R.id.ratingbar2)).setOnRatingBarChangeListener(this);
32 }
33 @Override
34 public void onRatingChanged(RatingBar ratingBar, float rating,
35 boolean fromUser) {
36 final int numStars = ratingBar.getNumStars();
37 mRatingText.setText(
38 " 受欢迎度" + rating + "/" + numStars);
39 // Since this rating bar is updated to reflect any of the other rating
40 // bars, we should update it to the current values.
41 if (mIndicatorRatingBar.getNumStars() != numStars) {
42 mIndicatorRatingBar.setNumStars(numStars);
43 mSmallRatingBar.setNumStars(numStars);
44 }
45 if (mIndicatorRatingBar.getRating() != rating) {
46 mIndicatorRatingBar.setRating(rating);
47 mSmallRatingBar.setRating(rating);
48 }
49 final float ratingBarStepSize = ratingBar.getStepSize();
50 if (mIndicatorRatingBar.getStepSize() != ratingBarStepSize) {
51 mIndicatorRatingBar.setStepSize(ratingBarStepSize);
52 mSmallRatingBar.setStepSize(ratingBarStepSize);
53 }
54 }
55 }



posted @ 2011-09-21 12:43  Zhukoo  阅读(283)  评论(0编辑  收藏  举报