java – setNumStars和setRating在自定义RatingBar中不起作用

前端之家收集整理的这篇文章主要介绍了java – setNumStars和setRating在自定义RatingBar中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在Java中设置自定义ratingBar时遇到问题.问题是setNumStars和setRating不起作用.虽然我已经将速率设置为0.0f,但我只是在屏幕上看到一个完全标记的星.

这是代码

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

chapter1 = new Chapter(this);
android.widget.RelativeLayout.LayoutParams layoutParam = new RelativeLayout.LayoutParams(metrics.widthPixels,metrics.heightPixels);
myLayout.addView(chapter1,layoutParam);

for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
        RatingBar ratingBar = new RatingBar(this);
        ratingBar.setProgressDrawable(ResourcesCompat.getDrawable(getResources(),R.drawable.custom_ratingbar_menu,null));
        ratingBar.setNumStars(3);
        ratingBar.setRating(0.0f);
        layoutParam = new RelativeLayout.LayoutParams(metrics.widthPixels / 6,metrics.heightPixels / 32);
        layoutParam.setMargins(70 + chapter1.getLeft() + wSize * j,50 + chapter1.getTop() + hSize * i + (metrics.heightPixels / 6),0);
        myLayout.addView(ratingBar,layoutParam);
    }
}

我们在How to create Custom Ratings bar in Android中使用了接受的answer_ratingarbar_menu答案

这是custom_ratingbar_menu:

它是customm_empty_menu:

这是custom_full_menu:

最佳答案
编辑
代码中设置可绘制的进度存在一些问题.您的drawable在XML中使用时可以工作.问题似乎围绕设置适当的属性.如果我有时间,我可以进一步研究或者其他人有想法. (检查你的XML,有一个错字:“customm”而不是“custom”.我已在下面更正了.)

(对于API级别21及更高级别,您可以执行以下操作:

在MainActivity.java中:

RatingBar ratingBar = new RatingBar(this,null,R.style.myRatingBar);

在styles.xml中: