2017-04-27 61 views
1

我正在这个反馈屏幕上,我必须实现自定义评级栏。做了一些研究后,我发现this方法就是我所需要的。在这一点上,我以叠加的方式得到两个不同的评级栏。我想隐藏android提供的默认评级栏,我知道为什么会发生这种情况。我无法隐藏评分栏。我试过getProgressDrawable().setVisible(false, false)但它没用。Android自定义评分栏显示默认

下面是我重写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); 
    } 

我只是想隐藏的Android违约评级酒吧覆盖我自定义的等级栏上。

谢谢!

回答

0

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> 

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> 
+0

我想这一点。但现在它只显示了两个评分栏,我的star_filled和star_unfilled。 –

相关问题