1. 程式人生 > >Android星星評分控制元件SimpleRatingBar的使用(可點選和滑動星星)

Android星星評分控制元件SimpleRatingBar的使用(可點選和滑動星星)

Android星星評分控制元件SimpleRatingBar的使用

有一個專案需求,需要一個星星評分的控制元件,Android原生的RatingBar十分難用,而且還很醜,在網上找了很久,找到一個很好用的評分控制元件,在此記錄和分享一下

簡單示例

1.使用方法
在Gradle檔案中新增依賴

repositories {
    jcenter()
}
dependencies {
    compile 'com.iarcuschin:simpleratingbar:0.1.5'
}

2.可用屬性和方法
設定星數:app:srb_numberOfStars/setNumberOfStars(int)
設定星數:app:srb_rating/ 設定評級setRating(float)
設定步長:app:srb_stepSize/ setStepSize(float)
設定星星大小:app:srb_starSize/ setStarSize(float)
設定最大星號:app:srb_maxStarSize/ setMaxStarSize(float)
設定邊框寬度:app:srb_starsSeparation/ setStarsSeparation(float)
設定邊框寬度:app:srb_starBorderWidth/ setStarBorderWidth(float)
設定星角半徑:app:srb_starCornerRadius/ setStarCornerRadius(float)
設定正常狀態下的星形邊框顏色:app:srb_borderColor/ setBorderColor(@ColorInt int)
用正常狀態設定星星填充顏色用:app:srb_fillColor/ setFillColor(@ColorInt int)
用正常狀態設定星星背景顏色:app:srb_starBackgroundColor/setStarBackgroundColor(@ColorInt int)
設定正常狀態下額定條的背景顏色:app:srb_backgroundColor/ setBackgroundColor(@ColorInt int)
在按下狀態設定星級邊框顏色:app:srb_pressedBorderColor/setPressedBorderColor(@ColorInt int)
設定星形填充顏色處於按下狀態:app:srb_pressedFillColor/setPressedFillColor(@ColorInt int)
在壓制狀態下設定星星背景顏色:app:srb_pressedStarBackgroundColor/setPressedStarBackgroundColor(@ColorInt int)
用壓力狀態設定額定條的背景顏色:app:srb_pressedBackgroundColor/setPressedBackgroundColor(@ColorInt int)
啟用/禁用使用者的互動:app:srb_isIndicator/setIsIndicator(boolean)
啟用/禁用星形邊框:app:srb_drawBorderEnabled/ setDrawBorderEnabled(boolean)
設定填充方向(左或右):app:srb_gravity/ setGravity(Gravity)
得到已選中星星的個數:getRating()
得到一共有多少顆星星:getNumberOfStars()

3.簡單示例
xml檔案

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height
="wrap_content" android:text="評分:" android:layout_marginRight="10dp" android:textColor="#2f2f2f" android:layout_gravity="center_vertical" android:textSize="20sp"/>
<com.iarcuschin.simpleratingbar.SimpleRatingBar android:id
="@+id/ratingbar" android:layout_width="wrap_content" android:layout_height="wrap_content" app:srb_starSize="40dp" app:srb_numberOfStars="5" app:srb_rating="3" app:srb_stepSize="1" app:srb_drawBorderEnabled="false"//取消邊框 app:srb_starBackgroundColor="#c0c0c0"//選中前的顏色 app:srb_fillColor="@color/colorPrimary" />
//選中後的顏色 </LinearLayout>

SimpleRatingBar自帶點選星星變亮和滑動星星變亮的事件,不需要我們另外寫程式碼,如果要監聽選中星星個數的改變,可以新增setOnRatingBarChangeListener監聽,如下:

SimpleRatingBar rating = findViewById(R.id.ratingbar);
rating.setOnRatingBarChangeListener(new SimpleRatingBar.OnRatingBarChangeListener() {
            @Override
            public void onRatingChanged(SimpleRatingBar simpleRatingBar, float rating, boolean fromUser) {
                //這裡是防止星星的個數變成零個,最少為一個
                if(rating.getRating() == 0) srating.setRating(1);
            }
        });

覺得有用就點個讚唄,拜託啦!