Android评级栏只显示全明星,不显示半明星

Android评级栏只显示全明星,不显示半明星,android,ratingbar,Android,Ratingbar,我在Android应用程序中使用评级栏。但它只显示全明星,而我也想要半明星 我插入了一个带有名称和ratingValue的SQLite行,其中ratingValue表示为“3.5”,但我的应用程序将其转换为“4”。即使我的步长为“0.5”,默认值也会更改为“3” 编辑: 如果您单击列表行,它会显示另一个评级栏,您可以“评级”,如果您单击按钮,它会将评级值发送到数据库中。listitem RatingBar仅用于显示“平均”评级,但这就是它出错的地方,它将值向上舍入 编辑2: 将步长设置为0.1,

我在Android应用程序中使用评级栏。但它只显示全明星,而我也想要半明星

我插入了一个带有名称和ratingValue的SQLite行,其中ratingValue表示为“3.5”,但我的应用程序将其转换为“4”。即使我的步长为“0.5”,默认值也会更改为“3”

编辑: 如果您单击列表行,它会显示另一个评级栏,您可以“评级”,如果您单击按钮,它会将评级值发送到数据库中。listitem RatingBar仅用于显示“平均”评级,但这就是它出错的地方,它将值向上舍入

编辑2: 将步长设置为0.1,奇怪的是,现在只有中间的星星接受浮点数。。。 其余的星星仍然是满的 如果我将评级设置为1.2,只有第二颗星接受浮点值,第一颗星接受0.2,以此类推,但其他星星(不在该范围内)仅为或满或空

这里有一些代码

列表项_布局

<TableRow>    
    <RatingBar
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/sportsRatingBar"
        android:gravity="center_horizontal"
        android:focusableInTouchMode="false"
        android:isIndicator="true"
        android:clickable="false"
        android:focusable="false"
        android:layout_column="1"
        android:rating="1.1"
        android:stepSize="0.1" />
可重用类

public float getRating() { return Rating; }
用于评级的SQLite表格列

 COLUMN_RATING + " real not null);"
最后,从数据库获取

c.getFloat(COLUMN_RATING_COL));
需要解释的一些图像

首先,评级小部件的定义方式是它不能接受值。Clickable设置为false,isIndicator设置为true。要接受输入,请按以下方式定义小部件

<RatingBar
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/sportsRatingBar"
        android:gravity="center_horizontal"
        android:rating="2.5"
        android:stepSize="0.5" />

对于获取值,不确定如何设置变量额定值


查看图像,了解小部件的外观

我想你不需要任何库来做这个,我只是尝试了一下,而且效果很好

<android.support.v7.widget.AppCompatRatingBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="?android:attr/ratingBarStyle"
    android:background="@android:color/holo_red_dark"
    android:id="@+id/ratingBar1"
    android:stepSize="0.1"
    android:rating="2.5"/>

列表中的分级栏可能无法手动更改,因此它是一个指示器,clickable设置为false,这样我可以在单击列表行时弹出一个对话框。在这种情况下,您的代码很好。如果您可以共享getRating代码,它将能够帮助您。这将是可重用的类,它就是该方法;)如何设置变量“评级”的值是一个问题。我将其定义为私人浮动评级=2.5f可能有问题。这对我没有帮助,如果我从数据库中读取值,它会显示正确的值,浮动,但从我想将其显示到评级栏的那一刻起,它就被取整了。我尝试像下面这样动态设置评级
评级栏。设置评级(4.5f)成功了。请尝试相同的方法。感谢您的帮助,我现在有点进一步(在我的问题中编辑),但值必须来自sqlite数据库。在数据库中,只有中间的星星“接受”浮动…如果你设置了,那么它就完全帮助了我,我会接受这个有帮助的答案;)我找到了答案,一部分是因为@Dave Ranjan,另一部分是因为在ratingbar中添加了一种风格,
<android.support.v7.widget.AppCompatRatingBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="?android:attr/ratingBarStyle"
    android:background="@android:color/holo_red_dark"
    android:id="@+id/ratingBar1"
    android:stepSize="0.1"
    android:rating="2.5"/>
RatingBar ratingBar = (RatingBar) findViewById(R.id.coloredRatingBar1);
    ratingBar.setRating(4.8f);
    ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
        @Override
        public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
            Log.i(TAG, "onRatingChanged: rating : "+rating);
        }
    });