W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
上一節(jié)的SeekBar是不是很輕松咧,本節(jié)我們學(xué)的這個(gè)RatingBar(星級(jí)評(píng)分條)也非常簡(jiǎn)單,相信在某寶, 買過(guò)東西的對(duì)這個(gè)應(yīng)該不陌生,收到賣家的包裹,里面很多時(shí)候會(huì)有個(gè)小紙片,五星好評(píng)返還多少元這樣, 而評(píng)分的時(shí)候就可以用到我們這個(gè)星級(jí)評(píng)分條了~先來(lái)瞅瞅官方文檔 官方文檔:RatingBar 我們可以看到,這玩意和SeekBar的類結(jié)構(gòu)是一樣的,也是ProgressBar的子類:
也就是說(shuō)他同樣有用ProgressBar的相關(guān)屬性,接下來(lái)我們來(lái)探究RatingBar特有的屬性!
先來(lái)看看5.0的原生SeekBar長(zhǎng)什么樣:
——相關(guān)屬性:
android:isIndicator:是否用作指示,用戶無(wú)法更改,默認(rèn)false
android:numStars:顯示多少個(gè)星星,必須為整數(shù)
android:rating:默認(rèn)評(píng)分值,必須為浮點(diǎn)數(shù)
android:stepSize: 評(píng)分每次增加的值,必須為浮點(diǎn)數(shù)
除了上面這些,還有兩種樣式供我們選擇咧,但是不建議使用,因?yàn)檫@兩種樣式都好丑... 他們分別是:
style="?android:attr/ratingBarStyleSmall"
style="?android:attr/ratingBarStyleIndicator"
——事件處理: 只需為RatingBar設(shè)置OnRatingBarChangeListener事件,然后重寫下onRatingChanged()方法即可!
實(shí)現(xiàn)代碼如下:
public class MainActivity extends AppCompatActivity {
private RatingBar rb_normal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rb_normal = (RatingBar) findViewById(R.id.rb_normal);
rb_normal.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
Toast.makeText(MainActivity.this, "rating:" + String.valueOf(rating),
Toast.LENGTH_LONG).show();
}
});
}
}
嘿嘿,我們很多時(shí)候不會(huì)用星星作為評(píng)分標(biāo)準(zhǔn)的,我們來(lái)改改唄~ 把星星改成其他的,比如笑臉,兩個(gè)素材:
接下來(lái)和前面的SeekBar一樣編寫一個(gè)layer-list的文件:
ratingbar_full.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background"
android:drawable="@mipmap/ic_rating_off1" />
<item android:id="@android:id/secondaryProgress"
android:drawable="@mipmap/ic_rating_off1" />
<item android:id="@android:id/progress"
android:drawable="@mipmap/ic_rating_on1" />
</layer-list>
接著在style.xml中自定義下RatingBar Style,在style.xml加上這個(gè):
<style name="roomRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratingbar_full</item>
<item name="android:minHeight">24dip</item>
<item name="android:maxHeight">24dip</item>
</style>
最后在布局中的Ratingbar組件設(shè)置下:
<RatingBar
android:id="@+id/rb_normal"
style="@style/roomRatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
運(yùn)行效果圖:
好的,效果還可以哈,至于間距問(wèn)題,就需要對(duì)圖片坐下處理了,就是需要切圖的時(shí)候在圖片左右預(yù)留點(diǎn)空格~!
好的,關(guān)于RatingBar的使用就到這里,和前面的SeekBar其實(shí)大同小異,蠻輕松的~嗯,謝謝~
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: