2016-06-26 1 views
4

Lors de la définition RatingBar dans le fichier XML et définir android: drawableProgress au dessin personnalisable que j'ai créé (comme décrit here), il montre 5 étoiles dans l'écran d'aperçu du studio android avec api 22 mais quand je mets la cible api à l'api 23 cela montre 1 étoile mais la barre d'évaluation (android: width = "wrap_content") est à la même largeur que celle avec 5 étoiles. Ceci est également vérifié sur les téléphones cellulaires avec Lollipop et guimauve OS (même comportement que celui décrit).Personnalisé RatingBar Affiche un nombre différent d'étoiles lorsque sur l'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

Répondre

0

Peut-être la valeur par défaut numStars a changé. Lorsque je l'ai défini dans le fichier xml, cela fonctionne très bien.

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

Cela pourrait aussi être un problème de mise en page, si wrap_content n'a pas assez d'espace pour afficher 5 étoiles. Peut-être avez-vous des qualificatifs pour Api 23? Si ce n'est pas le cas et cela fonctionne bien pour < 23, ne me dérange pas à ce sujet.

+0

Merci pour votre commentaire, s'il vous plaît regarder ma question éditée. –

+0

Pouvez-vous publier le fichier XML complet pour voir la largeur de la mise en page? Merci –

+0

Édité la section de code. –

0

Vous pouvez utiliser le style personnalisé comme ci-dessous et utiliser ce style dans votre fichier de mise en page:

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

Et utiliser dans votre mise en page comme ci-dessous:

<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"/> 

Je pense qu'il ya un problème avec le thème que vous utilisez. S'il vous plaît essayez AppTheme au lieu de tout autre et le code ci-dessus pourrait fonctionner pour vous.

+0

Merci pour votre commentaire mais toujours le nombre d'étoiles montrées quand sur l'api 23 est un. –

+0

Je pense qu'il y a un problème avec le thème que vous utilisez. S'il vous plaît essayez AppTheme au lieu de tout autre et le code ci-dessus pourrait fonctionner pour vous. – Drv