android评级栏只显示int值

时间:2016-08-13 05:47:10

标签: android decimal ratingbar

我使用此代码通过评级栏显示小数值。但它围绕值并显示第一个更大的int

    ratingBar.setNumStars(5);
    ratingBar.setMax(5);
    ratingBar.setStepSize(0.5f);
    ratingBar.setRating(Float.parseFloat("2.5"));
XML文件中的

                            <RatingBar
                            android:id="@+id/ratingBar1"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:max="5"
                            android:layoutDirection="ltr"
                            android:numStars="5"
                            android:stepSize="0.5" />

the image I see in android

2 个答案:

答案 0 :(得分:0)

布局:

    <RatingBar android:id="@+id/ratingbar"  android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:numStars="5" 
android:stepSize="0.5"/>

的活动:

private RatingBar ratingBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ratingBar = (RatingBar)findViewById(R.id.ratingBar);
    assert ratingBar != null;

    dosomething();
    ratingBar.setRating(0.0f);
}

private void dosomething() {
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            ratingBar.setRating(2.5f);
        }
    }, 2000);
}

表格中的结果图片: WindowInsets - Listeners to layouts by Chris Banes

答案 1 :(得分:0)

我在sdk 23中测试您的代码并遇到同样的问题。我无法弄清楚这个追加的方式,但你可以在设置float之前通过设置舍入值来暂时解决它。就像这样:

  ratingBar.setRating(Math.round( 2.5f));
  ratingBar.setRating( 2.5f);

也不要setMax setStepSize。让我知道它是否有效。