如果值在小数位,android会设置评级栏中的部分星标

时间:2013-09-06 16:09:00

标签: android ratingbar

我想使用评级栏显示用户的分数。 例如,如果用户得到30个问题中的7个正确,则textview(tv_percentage)正确显示23.33%,但评级明星应该显示5星中的1.17星,但现在无论得分是多少,总是显示5颗星。

我对以下内容做了什么错误?

代码:

    SharedPreferences score = this.getSharedPreferences("MyApp", 0);
    int userscore = score.getInt("score", 0);
    int userQnumber = score.getInt("number_of_question_to_selected", 9999);     

    double scoring100 = Double.valueOf(userscore) / Double.valueOf(userQnumber) *100;
    String stripped2 = Double.valueOf(scoring100).toString();       
    DecimalFormat myFormatter1 = new DecimalFormat("###,###,###.##");       

    stripped2 = myFormatter1.format(Double.valueOf(stripped2));     
    tv_percentage.setText(""+stripped2+"%");        

    ratingBar1.setRating(Float.parseFloat(stripped2)); 

编辑代码:

    float d= (float) (scoring100 /100 * 5);
    String S = Double.valueOf(d).toString();    
    tv2_90.setText(""+S); // for testing only, tv2_90 showing proper value
    ratingBar1.setStepSize((d));
    ratingBar1.setRating(Float.parseFloat(stripped2)); 

布局:

            <RatingBar
                android:id="@+id/ratingBar1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:isIndicator="true"
                android:max="100"
                android:numStars="5"
                android:stepSize="0.1" />

3 个答案:

答案 0 :(得分:7)

你可以找到它here

    float d= (float) ((number*5) /100);
    RatingBar rb = (RatingBar) findViewById(R.id.ratingBar1);
    rb.setRating(d);

在您的布局上:

<RatingBar
    android:id="@+id/ratingBar1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:isIndicator="true"
    android:max="5"
    android:stepSize="0.01" />

答案 1 :(得分:0)

如果要显示精确分数,则需要在

中设置stepSize
rate.setStepSize((float) 0.1);
rate.setRating((float)3.6);

它将显示第四颗星被填满一半以上。

答案 2 :(得分:0)

  

通过XML

<RatingBar
 .....
 android:max="5"
 android:numStars="5"
 android:progressTint="@color/golden"
 android:rating="2"
 android:stepSize="1"/>
  

通过Java代码

  ratingBar.setMax(5);
  ratingBar.setNumStars(5);
  ratingBar.setStepSize(0.1f);
  

等等......还有更多

您必须将RatingBar 宽度 属性设置为 wrap_content ,否则上述属性不会对用户界面产生影响。