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);
}
});
覺得有用就點個讚唄,拜託啦!