需要自定义RatingBar的样式。但是原生的RatingBar自定义很不方便,兼具无法调节,半颗星总是很难对齐,大小也不能自由调节。
三、程序代码
运行效果:
通过网络搜索,发现这是原生RatingBar本身的问题,很多开发者推荐使用第三方评分控件。
一、添加依赖
dependencies {
compile 'com.hedgehog.ratingbar:app:1.1.2'
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--各项属性根据字面可以理解-->
<com.hedgehog.ratingbar.RatingBar
android:id="@+id/rat_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
app:clickable="false"
app:halfstart="true"
app:starCount="5"
app:starEmpty="@mipmap/ratingbar_star_empty"
app:starFill="@mipmap/ratingbar_star_fill"
app:starHalf="@mipmap/ratingbar_star_half"
app:starImageHeight="40dp"
app:starImagePadding="5dp"
app:starImageWidth="40dp" />
</RelativeLayout>
三、程序代码
public class MainActivity extends AppCompatActivity {
private RatingBar mRatingBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mRatingBar= (RatingBar) findViewById(R.id.rat_test);
//设置是否可点击,在需要评分的地方要设置为可点击
mRatingBar.setmClickable(true);
//设置星星总数
mRatingBar.setStarCount(5);
//设置星星的宽度
mRatingBar.setStarImageWidth(40f);
//设置星星的高度
mRatingBar.setStarImageHeight(40f);
//设置星星之间的距离
mRatingBar.setImagePadding(5f);
//设置空星星
mRatingBar.setStarEmptyDrawable(getResources()
.getDrawable(R.mipmap.ratingbar_star_empty));
//设置填充的星星
mRatingBar.setStarFillDrawable(getResources()
.getDrawable(R.mipmap.ratingbar_star_fill));
//设置半颗星
mRatingBar.setStarHalfDrawable(getResources()
.getDrawable(R.mipmap.ratingbar_star_half));
//设置显示的星星个数
mRatingBar.setStar(4.5f);
//设置评分的监听
mRatingBar.setOnRatingChangeListener(
new RatingBar.OnRatingChangeListener() {
@Override
public void onRatingChange(float RatingCount) {
Toast.makeText(MainActivity.this, "你给出了"+
(int)(RatingCount/5*100)+"分",
Toast.LENGTH_SHORT).show();
}
});
}
}
运行效果: