4

When setting RatingBar in xml file and set android:drawableProgress to custom drawable I've created (as described here) it shows 5 stars in the preview screen of android studio with api 22 but when I set the api target to api 23 it shows 1 star but the ratingbar (android:width="wrap_content") is at the same width as it is with 5 stars. This is also checked on cellular phones with Lollipop and marshmallow OS (Same behavior as described).

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

Community
  • 1
  • 1
Sagi Shchori
  • 150
  • 9

2 Answers2

0

Maybe the default numStars value has changed.

When I set it in the xml file, it works fine.

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

It could be a layout issue too, if wrap_content doesn't have enough space to display 5 stars. Maybe you have qualifiers for Api 23 ? If not and it works fine for <23, do not mind about it.

Alexandre Martin
  • 1,472
  • 5
  • 14
  • 27
0

You can use custom style as below and use that style in your layout file:

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

And use this in your layout as below:

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

I think there is some problem with the theme you are using. Please try AppTheme instead of any other and the above code might work for you.

Dhruvi
  • 1,971
  • 2
  • 10
  • 18
  • Thank you for you comment but still the number of stars shown when on api 23 is one. – Sagi Shchori Jun 27 '16 at 06:25
  • I think there is some problem with the theme you are using. Please try AppTheme instead of any other and the above code might work for you. – Dhruvi Jun 27 '16 at 07:26