Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示默认值的Android自定义分级栏_Android_Ratingbar - Fatal编程技术网

显示默认值的Android自定义分级栏

显示默认值的Android自定义分级栏,android,ratingbar,Android,Ratingbar,我在这个反馈屏幕上工作,在那里我必须实现一个自定义的评级栏。在做了一些研究之后,我发现这个方法正是我所需要的。在这一点上,我得到了两个不同的评级栏在重叠的方式。我想隐藏android提供的默认评级栏,我知道它为什么会发生。我无法隐藏分级栏。我尝试了getProgressDrawable().setVisible(false,false),但没有用 这是我重写的onDraw(Canvas c)的代码方法: @Override protected synchronized void onDr

我在这个反馈屏幕上工作,在那里我必须实现一个自定义的评级栏。在做了一些研究之后,我发现这个方法正是我所需要的。在这一点上,我得到了两个不同的评级栏在重叠的方式。我想隐藏android提供的默认评级栏,我知道它为什么会发生。我无法隐藏分级栏。我尝试了
getProgressDrawable().setVisible(false,false)
,但没有用

这是我重写的onDraw(Canvas c)的代码方法:

@Override
    protected synchronized void onDraw(Canvas canvas)
    {
        int stars = getNumStars();
        float rating = getRating();
        try
        {
            bitmapWidth = getWidth() / stars;
        }
        catch (Exception e)
        {
            bitmapWidth = getWidth();
        }
        float x = 0;

        for (int i = 0; i < stars; i++)
        {
            Bitmap bitmap;
            Resources res = getResources();
            Paint paint = new Paint();

            if ((int) rating > i)
            {
                bitmap = BitmapFactory.decodeResource(res, R.drawable.filled_star);
            }
            else
            {
                bitmap = BitmapFactory.decodeResource(res, R.drawable.unfilled_star);
            }
            Bitmap scaled = Bitmap.createScaledBitmap(bitmap, getHeight(), getHeight(), true);
            canvas.drawBitmap(scaled, x, 0, paint);
            paint.setColor(Color.WHITE);
            paint.setTextSize(20f);
            canvas.drawText(String.valueOf(i), x+33, 83, paint);
            canvas.save();
            x += bitmapWidth;
        }



        super.onDraw(canvas);
    }  
@覆盖
受保护的同步void onDraw(画布)
{
int stars=getNumStars();
浮动评级=getRating();
尝试
{
bitmapWidth=getWidth()/stars;
}
捕获(例外e)
{
bitmapWidth=getWidth();
}
浮动x=0;
对于(int i=0;ii)
{
位图=位图工厂.decodeResource(res,R.drawable.filled_star);
}
其他的
{
位图=BitmapFactory.decodeResource(res,R.drawable.unfilled_star);
}
位图缩放=位图.createScaledBitmap(位图,getHeight(),getHeight(),true);
画布.绘制位图(缩放,x,0,绘制);
油漆。设置颜色(颜色。白色);
油漆。setTextSize(20f);
canvas.drawText(String.valueOf(i),x+33,83,paint);
canvas.save();
x+=位图宽度;
}
super.onDraw(帆布);
}  
我只想隐藏覆盖在自定义评级栏上的android默认评级栏

谢谢

layout.xml

  <RatingBar
                android:id="@+id/rating"
                style="@style/RatingBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:isIndicator="true"
                android:max="5"
                android:numStars="5"
                android:stepSize="0.5"/>

styles.xml

 <style name="RatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/ratingbar</item>
        <item name="android:minHeight">10dp</item>
        <item name="android:maxHeight">50dp</item>
    </style>

@可拉伸/比率杆
10dp
50dp
ratingbar.xml

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+android:id/background"
              android:drawable="@drawable/icon_empty" />
        <item android:id="@+android:id/secondaryProgress"
              android:drawable="@drawable/icon_empty" />
        <item android:id="@+android:id/progress"
              android:drawable="@drawable/icon_full" />
    </layer-list>

layout.xml

  <RatingBar
                android:id="@+id/rating"
                style="@style/RatingBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:isIndicator="true"
                android:max="5"
                android:numStars="5"
                android:stepSize="0.5"/>

styles.xml

 <style name="RatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/ratingbar</item>
        <item name="android:minHeight">10dp</item>
        <item name="android:maxHeight">50dp</item>
    </style>

@可拉伸/比率杆
10dp
50dp
ratingbar.xml

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+android:id/background"
              android:drawable="@drawable/icon_empty" />
        <item android:id="@+android:id/secondaryProgress"
              android:drawable="@drawable/icon_empty" />
        <item android:id="@+android:id/progress"
              android:drawable="@drawable/icon_full" />
    </layer-list>


我也试过这个。但现在它只显示了两个评级栏,分别显示了我的star_填充和star_未填充。我也尝试过这个。但现在它只显示了两个评级栏,分别显示了我的star_填充和star_未填充。