2016-06-26 12 views
4

Wenn RatingBar in Xml-Datei gesetzt und Androide: DrawableProgress auf benutzerdefinierte zeichnende Ich habe erstellt (wie here beschrieben) zeigt es 5 Sterne in der Vorschau von Android Studio mit API 22 aber wenn ich das api Ziel auf api 23 setze zeigt es 1 Stern aber die ratingbar (Android: width = "wrap_content") ist auf der gleichen Breite wie bei 5 Sternen. Dies wird auch auf Mobiltelefonen mit Lollipop und Marshmallow OS überprüft (Gleiches Verhalten wie beschrieben).Benutzerdefinierte RatingBar Zeigt unterschiedliche Anzahl von Sternen, wenn auf api 23

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      xmlns:app="http://schemas.android.com/apk/res-auto" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:padding="@dimen/spacing_standard" 
      android:orientation="vertical" 
      android:background="@color/sfly_orange" 
      android:fillViewport="true"> 


<com.shutterfly.android.commons.common.ui.TypefacedTextView 
     android:id="@+id/thank_you_label_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/order_confirmation_thank_you" 
     android:textColor="@android:color/white" 
     android:textSize="@dimen/rate_app_text_size_largest" 
     android:gravity="center" 
     app:typeface="medium" 
     android:layout_marginTop="@dimen/spacing_standard"/> 

<ImageView 
     android:layout_width="@dimen/rate_app_image_width" 
     android:src="@drawable/rate_icon" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginTop="@dimen/rate_app_spacing_standard" 
     android:layout_height="@dimen/rate_app_image_height"/> 

<LinearLayout 
     android:layout_width="match_parent" 
     android:orientation="vertical" 
     android:gravity="center" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="@dimen/rate_app_spacing_standard"> 

    <com.shutterfly.android.commons.common.ui.TypefacedTextView 
      android:id="@+id/order_number_label_view" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      app:typeface="medium" 
      android:text="@string/order_confirmation_order_number_label" 
      android:textColor="@android:color/white" 
      android:textSize="@dimen/rate_app_text_size_normal"/> 

    <com.shutterfly.android.commons.common.ui.TypefacedTextView 
      android:id="@+id/order_number_view" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      app:typeface="medium" 
      android:layout_marginTop="@dimen/spacing_standard" 
      android:textColor="@android:color/white" 
      android:textSize="@dimen/rate_app_text_size_larger"/> 

    <com.shutterfly.android.commons.common.ui.TypefacedTextView 
      android:id="@+id/order_confirmation_details_label_view" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/order_confirmation_details_label" 
      android:layout_marginTop="@dimen/spacing_standard_large" 
      android:textAlignment="center" 
      android:lineSpacingExtra="@dimen/rate_app_text_line_spacing" 
      android:gravity="center" 
      app:typeface="oblique" 
      android:textColor="@android:color/white" 
      android:textSize="@dimen/rate_app_text_size_normal" 
      tools:ignore="UnusedAttribute"/> 


    <RatingBar 
      android:id="@+id/rate_app_rating_bar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="@dimen/rate_app_spacing_standard" 
      android:numStars="@integer/rating_bar_number_of_stars" 
      android:stepSize="@integer/rating_bar_step" 
      android:minHeight="@dimen/button_height" 
      android:maxHeight="@dimen/button_height" 
      style="?android:attr/ratingBarStyle" 
      android:layout_gravity="center" 
      android:progressDrawable="@drawable/rating_bar_star_style"/> 
</LinearLayout> 


<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:orientation="vertical" 
     android:layout_marginTop="@dimen/rate_app_spacing_standard"> 

    <com.shutterfly.android.commons.common.ui.TypefacedTextView 
      android:id="@+id/rate_app_button" 
      android:layout_width="@dimen/button_width" 
      android:layout_height="@dimen/button_height" 
      android:gravity="center" 
      android:background="@drawable/button_white_background" 
      android:paddingLeft="@dimen/spacing_standard" 
      android:paddingRight="@dimen/spacing_standard" 
      android:text="@string/rate_shutterfly" 
      android:textAllCaps="true" 
      android:textColor="@color/sfly_orange" 
      android:textSize="@dimen/rate_app_text_size_normal_larger" 
      app:typeface="medium"/> 

    <com.shutterfly.android.commons.common.ui.TypefacedButton 
      android:id="@+id/return_to_store_button" 
      android:layout_width="@dimen/button_width" 
      android:layout_height="@dimen/button_height" 
      android:paddingLeft="@dimen/spacing_standard" 
      android:layout_marginTop="@dimen/spacing_standard" 
      android:layout_gravity="bottom|center_horizontal" 
      android:paddingRight="@dimen/spacing_standard" 
      android:text="@string/order_confirmation_return_to_store" 
      style="?android:attr/borderlessButtonStyle" 
      android:textAllCaps="true" 
      android:textColor="@color/white" 
      android:textSize="@dimen/rate_app_text_size_normal" 
      app:btnTypeface="medium" 
      android:layout_marginBottom="@dimen/spacing_standard" 
      android:background="@drawable/button_orange_background"/> 

</LinearLayout> 

</LinearLayout> 

When api 23 it shows 1 star When api 22 and below it shows 5 stars

Antwort

0

Vielleicht hat der Standard numStars Wert geändert.

Wenn ich es in der XML-Datei festlegen, funktioniert es gut.

<RatingBar 
    ... 
    numStars="5" /> 

Es könnte auch ein Layout-Problem sein, wenn wrap_content nicht genug Platz zum Anzeigen von 5 Sternen hat. Vielleicht hast du Qualifikanten für Api 23? Wenn nicht, und es funktioniert gut für < 23, nichts dagegen.

+0

Vielen Dank für Ihren Kommentar, bitte schauen Sie sich meine bearbeitete Frage an. –

+0

Können Sie die vollständige XML-Datei posten, um sich die Layoutbreite anzusehen? Danke –

+0

Bearbeitete den Codeabschnitt. –

0

Sie benutzerdefinierten Stil, wie unten verwenden können, und diesen Stil in Ihrer Layout-Datei verwenden:

<style name="CustomRatingBar" parent="@android:style/Widget.RatingBar"> 

    <item name="android:progressDrawable">@drawable/rating_bar_star_style</item> 
    <item name="android:minHeight">@dimen/button_height</item> 
    <item name="android:maxHeight">@dimen/button_height</item> 
    <item name="android:numStars">@integer/rating_bar_number_of_stars</item> 
    <item name="android:stepSize">@integer/rating_bar_step</item> 


</style> 

Und dies, wie unten in Ihrem Layout verwenden:

<RatingBar 
     android:id="@+id/rate_app_rating_bar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="@dimen/rate_app_spacing_standard" 
     style="@style/CustomRatingBar" 
     android:layout_gravity="center"/> 

Ich denke, es gibt ein Problem mit das Thema, das Sie verwenden. Bitte versuchen Sie AppTheme anstelle von anderen und der obige Code könnte für Sie arbeiten.

+0

Vielen Dank für Ihren Kommentar, aber immer noch die Anzahl der Sterne angezeigt, wenn auf api 23 eins ist. –

+0

Ich denke, es gibt ein Problem mit dem Thema, das Sie verwenden. Bitte versuchen Sie AppTheme anstelle von anderen und der obige Code könnte für Sie arbeiten. – Drv