【问题标题】:android rating bar shows only int valuesandroid评级栏仅显示int值
【发布时间】:2016-08-13 05:47:10
【问题描述】:

我使用此代码通过评分栏显示十进制值。但它会舍入值并首先显示更大的 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

【问题讨论】:

  • 代码对我有用。你能提供你的xml文件吗?
  • 尝试设置评分为:ratingBar.setRating(2.5f);
  • 即使在 XML 之后,它在我的工作室中也能正常工作!能否以图片的形式附加您的结果?
  • @MeghaMainar 它没有回答。我看到三颗星星已经上色了。
  • @technicalpo 我刚刚遇到了 Android Studio 不更新内容的问题。你能从设备中删除应用程序并重建它吗!

标签: android decimal ratingbar


【解决方案1】:

布局:

    <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);
}

生成一个表格图像:

【讨论】:

  • 它不起作用:-(。在我的应用程序中,我在调用 oncreate 后几秒钟更新了评级栏(一旦来自服务器的数据到达)。它与我的问题有关吗?
  • @technicalpo 哦,是这样的。你能把这个&lt;RatingBar android:id="@+id/ratingbar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:stepSize="1.0"/&gt; 放在你的布局文件中,然后在你有值时进行设置。即在您从服务器获得值之后。
  • 我做到了,但还没有答案。这真的很奇怪。我在不同的应用程序中使用了 ratingBar 几次,并且在任何情况下都遇到了这样的问题。
  • 抱住也不回答。真的很奇怪。
  • @technicalpo 你能检查它是否适用于其他版本,如(22 或 23)?
【解决方案2】:

我在sdk 23 中测试了您的代码并且遇到了同样的问题。我不知道这个附加的方法,但你可以在设置 float 之前通过设置舍入值暂时解决它。像这样:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多