我发现自己在这里有点困惑。我对 android/java 开发相当陌生,所以请在这里帮助确定我做错了什么。我已经在 google、android dev 和 stack 中进行了积极的检查,但在这方面找不到太多信息。
我有一个带有数字作为 theRating 的字符串变量。例如 2.5(满分 10 分) 我正在尝试使用 ratingbarstylesmall 来显示它...它仅用于显示而不是评级。
RatingBar rb = new RatingBar(this, null, android.R.attr.ratingBarStyleSmall);
rb.setIsIndicator(true);
rb.setNumStars(5);
rb.setStepSize((float) 0.5);
rb.setMax(10);
rb.setRating(Integer.parseInt(theRating));
llTextEtc.addView(rb);
星星在 LienarLayout (llTextEtc) 中加载良好,显示在正确的位置,这是我想要的正确样式的星星(小)但是......
这是完全随机的。有的显示 8 颗星,有的显示 15 颗星,然后返回 7 颗星,以此类推。完全随机。我究竟做错了什么?
多谢你们
更新:在接受的答案的帮助下:添加了一个 LinearLayout 来保存带有 wrap_content 布局的评级栏。否则父级(滚动视图)变成了 wrap_content。
LinearLayout llRating = new LinearLayout(this);
RatingBar rb = new RatingBar(this, null, android.R.attr.ratingBarStyleSmall);
rb.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
rb.setIsIndicator(true);
rb.setNumStars(5);
rb.setRating(Float.parseFloat(theRating)/2);
llRating.addView(rb);
llTextEtc.addView(llRating);
setStepSize 和 setMax 也被删除,Rating 被设置为浮点数而不是整数。星星被计算然后设置。当 isIndicator 为真时,stepSize 和 Max 没有帮助。