2016-06-17 14 views
2

ich mit sehr annoing Problem stapeln, ich möchte benutzerdefinierte ziehbar meiner Bewertungsleiste Widget hinzufügen, folgte ich someexamples, wie es geht:Individuelle Bewertungsleiste

1) ich meinen eigenen Stil geschaffen, Set minHeight=16dip und maxHeight=16dip

2) Hinzugefügte 16px * 16px Sternzeichen.

Es Symbol geändert, aber das Problem ist, dass meine Sterne verschwimmen, d. H. Niedrige Auflösung. Und ich weiß warum, bcs Zeichensätze sind 16 * 16px, aber ich kann ihre Qualität nicht besser machen (zum Beispiel 76px * 76px), bcs Android wird keine Bewertungsleiste Symbole skalieren. Wenn Sie die MinHeight und MaxHeight verringern, schneidet Android die Icons immer ab. Auch wenn ich nicht min und max verwende, ist das Ergebnis dasselbe - meine großen Zeichen (ich habe versucht, in hdpi, xhdpi-Ordnern, zu zeichnen), einfach zuschneiden.

Gibt es eine Möglichkeit, die Auflösung meiner Zeichen in benutzerdefinierten RatingBar zu erhöhen? Danke.

P.S. hier ist mein Code für alle Fälle:

Stil:

<style name="CustomRatingBar" parent="@android:style/Widget.RatingBar"> 
    <item name="android:progressDrawable">@drawable/rating_bar_drawable</item> 
    <item name="android:minHeight">16dip</item> 
    <item name="android:maxHeight">16dip</item> 
</style> 

rating_bar_drawable.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@android:id/background" android:drawable="@drawable/car_washes_star_empty" /> 
<item android:id="@android:id/secondaryProgress" android:drawable="@drawable/car_washes_star_fill" /> 
<item android:id="@android:id/progress" android:drawable="@drawable/car_washes_star_fill" /> 

main.xml:

<RatingBar 
      android:id="@+id/car_washes_list_item_rating_bar" 
      style="@style/CustomRatingBar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="@dimen/car_washes_item_rating_bar_margin_right" 
      android:layout_marginRight="@dimen/car_washes_item_rating_bar_margin_right" 
      android:numStars="5"/> 
+3

Mögliche Duplikat-Displays nicht wollen, von [Wie ändert man die Sternbilder der RatingBar?] (Http://stackoverflow.com/questions/607610/how-to-change-the-star-images-of-the-ratingbar) –

+0

Nein, ist es nicht, Ich habe die Zeichen geändert, aber die Qualität ist schlecht –

Antwort

2

i auch versucht, um den benutzerdefinierten Bewertungsstil onc zu verwenden e in Android und meine Erfahrung war schlecht, so habe ich gelernt, dass es besser ist, die nativen sytles zu verwenden und dann wie unten

<RatingBar 
    android:id="@+id/ratingBar" 
    android:isIndicator="false" 
    android:numStars="5" 
    android:stepSize="1.0" 
    style="?android:attr/ratingBarStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="45dp" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/linearLayoutLoginFailed" 
    android:progressTint="@android:color/white" 
    /> 

und in Ihrer Klasse die Farbe in Ihrer Klassendatei cutomize, wenn Sie die Farbe ändern mögen, yoru Bewertungssterne diesen Code hinzufügen

LayerDrawable layerDrawable = (LayerDrawable) ratingBar.getProgressDrawable();

// Unfilled star color 
    DrawableCompat.setTint(DrawableCompat.wrap(layerDrawable.getDrawable(2)), 
      Color.WHITE); 
3

Versuchen Sie dieses Beispiel

  1. custom_ratingbar_selector.xml in ziehbar Erstellen und fügen Sie diesen Code

    <?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/unslected_star_icon" /> 
    
    <item android:id="@android:id/secondaryProgress" 
    android:drawable="@drawable/unslected_star_icon" /> 
    
    <item android:id="@android:id/progress" 
    android:drawable="@drawable/slected_star_icon" /> 
    
    </layer-list> 
    
  2. Verwendung dieses in Ihrem Layout Aktivität

    <RatingBar 
    android:id="@+id/ratingBar2" 
    android:layout_width="wrap_content" 
    android:layout_height="21dp" 
    android:progressDrawable="@drawable/custom_ratingbar_selector" 
    android:numStars="5" 
    android:stepSize="1" 
    android:rating="3.0" /> 
    

    Hinweis:

    Dimen my pic ist 22 * ​​21, so nehmen i Höhe von rating bar ist 21dp .... überprüfen Größe ur pic ist und eingestellt, wie Höhe, wenn u unaccurately