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