星級評分條,不用ratingbar#
說起星級評分,最先想到的就是ratingbar...但是實在是不好用,UI適配起來太麻煩...(我使用的屏幕適配方案是像素縮放萬能式,就是所有布局文件里不用dp,全用px)... 所以在網上找了找seekbar的自定義,決定使用這個.
首先先在布局文件里定義一個seekbar
<SeekBar android:id="@+id/item_evaluate_list_sbr_level" android:layout_width="420px" android:layout_height="86px" android:background="@drawable/evaluate_zero_stars" android:max="100" android:progress="25" android:layout_marginRight="30px" android:progressDrawable="@null" android:thumb="@null" android:thumbOffset="@null" android:visibility="visible"/>
圖片我準備了這幾張:
什么?你想要半星?...自己改去..
接下來是重點,seekbar的監(jiān)聽:
sbrLevel.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { String level = ""; if (progress >= 0 && progress <= 20) { level = "1"; seekBar.setBackgroundResource(R.drawable.evaluate_one_stars); } else if (progress > 20 && progress <= 40) { level = "2"; seekBar.setBackgroundResource(R.drawable.evaluate_two_stars); } else if (progress > 40 && progress <= 60) { level = "3"; seekBar.setBackgroundResource(R.drawable.evaluate_three_stars); } else if (progress > 60 && progress <= 80) { level = "4"; seekBar.setBackgroundResource(R.drawable.evaluate_four_stars); } else { level = "5"; seekBar.setBackgroundResource(R.drawable.evaluate_five_stars); } mList.get(position).setLevel(level); } });
嗯,原理就是通過進度,改變seekbar的背景圖片~~...
這用著舒服多了,星星的間距,大小,樣式統(tǒng)統(tǒng)扔給美工...哈哈哈哈哈