Android评分栏仅显示完整的明星,而不是半星

san*_*338 11 android ratingbar

我在Android应用程序中使用评级栏.但它只显示满星,当我也想要半星.

我插入了一个带有名称和ratingValue的SQLite行,其中ratingValue代表"3.5"但我的应用程序将其变为"4".即使我的StepSize为"0.5",即使默认值更改为"3"

编辑: 如果你点击listrow,它会对话另一个你可以"评价"的评级栏,如果点击一个按钮,它就会将评级值发送到数据库中.listitem RatingBar仅用于显示"平均"评级,但这是出错的地方,它将值向上舍入

编辑2: 将步长设置为0.1现在,奇怪的是,只有中间星接受浮点数...剩下的星星仍然只有满而且如果我将等级设置为1.2,则只有第二颗星接受浮动值,0.2第一个,等等,但其他星(不在那个范围内)只是或满或空

这是一些代码

ListItem_layout

<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" />
Run Code Online (Sandbox Code Playgroud)

项目清单

if(ratingBar!=null) {
                ratingBar.setRating(p.getRating());
                ratingBar.setTag(p.getId());
            }
Run Code Online (Sandbox Code Playgroud)

可重复使用的课程

public float getRating() { return Rating; }
Run Code Online (Sandbox Code Playgroud)

用于评级的SQLite表列

 COLUMN_RATING + " real not null);"
Run Code Online (Sandbox Code Playgroud)

最后,从数据库中获取

c.getFloat(COLUMN_RATING_COL));
Run Code Online (Sandbox Code Playgroud)

一些图像来解释 将第一个评级栏设置为2.6后

Dav*_*jan 6

我认为你不需要任何库,我只是尝试过它,它工作.

<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"/>
Run Code Online (Sandbox Code Playgroud)

我将start的值设置为4.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);
        }
    });
Run Code Online (Sandbox Code Playgroud)