11

I want to reduce the size of the Rating bar, I got some style properties that do it, but they are out of the reach of user interaction they are just Indicator. So, please let me know how to reduce the size. Thanks in advance.

Vaibhav Jani
  • 12,428
  • 10
  • 61
  • 73
Lalit Poptani
  • 67,150
  • 23
  • 161
  • 242

4 Answers4

26

How to glue the code given here ...

Step-1. You need your own rating stars in res/drawable ...

A full star

Empty star

Step-2 In res/drawable you need ratingstars.xml as follow ...

<?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/star_empty" />
    <item android:id="@+android:id/secondaryProgress"
          android:drawable="@drawable/star_empty" />
    <item android:id="@+android:id/progress"
          android:drawable="@drawable/star" />
</layer-list>

Step-3 In res/values you need styles.xml as follow ...

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/ratingstars</item>
        <item name="android:minHeight">22dip</item>
        <item name="android:maxHeight">22dip</item>
    </style>
</resources>

Step-4 In your layout ...

<RatingBar 
      android:id="@+id/rtbProductRating"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:numStars="5"
      android:rating="3.5"
      android:isIndicator="false"
      style="@style/foodRatingBar"    
/>  

Try Activity ....

package x.y;

import android.app.Activity;
import android.os.Bundle;

public class RatingBarDemo extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.product);

    }
}

With this layout product.xml ...

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="5dip"
    android:paddingBottom="5dip">
    <ImageView
        android:id="@+id/imgProduct"
        android:layout_width="50dip"
        android:layout_height="50dip" 
        android:src="@drawable/icon" 
        android:scaleType="centerCrop"
        />
    <RelativeLayout
        android:id="@+id/layProductInfo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/imgProduct"
        android:paddingLeft="5dip"
        android:paddingRight="0dip"
        android:paddingTop="5dip"
        android:paddingBottom="5dip">  
        <TextView
            android:id="@+id/tvProductName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Product Name"
            android:textSize="17dip" 
            />
        <RatingBar 
            android:id="@+id/rtbProductRating"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:numStars="5"
            android:rating="3.5"
            android:isIndicator="false"
            style="@style/foodRatingBar"
            android:layout_below="@id/tvProductName"
            />  
        <TextView
            android:id="@+id/tvPriceLabel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="$45.87"
            android:layout_toRightOf="@id/rtbProductRating"
            android:layout_below="@id/tvProductName"
            android:paddingLeft="10dip"
            android:textSize="17dip" 
            />  
      </RelativeLayout>     
  </RelativeLayout>
Vaibhav Jani
  • 12,428
  • 10
  • 61
  • 73
0

I've searched through a lot of posts with the same question here and I was trying out the answer provided by @Vaibhav A. Jani, when I just stopped by a more simple solution to this question. I am not saying that @Vaibhav A. Jani answer is not correct tho.

Try this, it worked for me to see stars much smaller:

RatingBar ratingBar = new RatingBar(context, null, android.R.attr.ratingBarStyleSmall);

And also I was able to create lots of RatingBar dynamically, without touching any xml file, just java coding.

Reference

Community
  • 1
  • 1
FLBKernel
  • 860
  • 13
  • 21
0

Try changing style

 <RatingBar
        android:layout_width="wrap_content"
        android:rating="4.5"
        style="@style/Base.Widget.AppCompat.RatingBar.Small"
        android:layout_height="wrap_content" />
Prathik
  • 29
  • 9
0

Working Code : You can easily reduce size of rating bar stars Just add in xml as below

android:scaleX="0.5" android:scaleY="0.5"

  <RatingBar
            android:id="@+id/ratingBar_visibility"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:numStars="5"
            android:scaleX="0.5"
            android:scaleY="0.5" />
Ashok Reddy M
  • 330
  • 3
  • 9