CUSTOM RATINGBAR
SOURCE CODE [main.xml] is
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
<RatingBar android:id="@+id/ratingbar"
</LinearLayout>
SOURCE CODE [styles.xml] is
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomRatingBar" parent="@android:style/Widget.RatingBar.Small">
<item name="android:maxHeight">16dip</item>
</style>
</resources>
SOURCE CODE [custom_ratingbar.xml] is
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background"
SOURCE CODE [custom_ratingbar_filled.xml] is
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
<item android:state_focused="true"
<item android:state_selected="true"
<item android:drawable="@drawable/star_on" />
</selector>
SOURCE CODE [custom_ratingbar_empty.xml] is
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
<item android:state_focused="true"
<item android:state_selected="true"
<item android:drawable="@drawable/star_off" />
</selector>
SOURCE CODE [CustomRatingBarExample.java] is
package Com.CustomRatingBarExample;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RatingBar;
public class CustomRatingBarExample extends Activity
{
RatingBar rb;
Note:
Save the file [styles.xml] in values folder. This folder already has a file [strings.xml].
Save the files [custom_ratingbar.xml], [custom_ratingbar_filled.xml], [custom_ratingbar_empty.xml] in drawable folder.
Save the images [custom ratings icon – star_on.png, star_off.png] in the drawable folder.
The OUTPUT will be
SOURCE CODE [main.xml] is
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"><TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<RatingBar android:id="@+id/ratingbar"
android:layout_width="wrap_content"
style="@style/CustomRatingBar"android:layout_height="50px" />
</LinearLayout>
SOURCE CODE [styles.xml] is
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomRatingBar" parent="@android:style/Widget.RatingBar.Small">
<item name="android:progressDrawable”>@drawable/custom_ratingbar</item>
<item name="android:minHeight">16dip</item><item name="android:maxHeight">16dip</item>
</style>
</resources>
SOURCE CODE [custom_ratingbar.xml] is
<?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/custom_ratingbar_empty" />
<item android:id="@+android:id/secondaryProgress"android:drawable="@drawable/custom_ratingbar_empty" />
<item android:id="@+android:id/progress"android:drawable="@drawable/custom_ratingbar_filled" />
</layer-list>SOURCE CODE [custom_ratingbar_filled.xml] is
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:state_window_focused="true"
android:drawable="@drawable/star_on" />
<item android:state_focused="true"
android:state_window_focused="true"
android:drawable="@drawable/star_on" />
<item android:state_selected="true"
android:state_window_focused="true"
android:drawable="@drawable/star_on" />
<item android:drawable="@drawable/star_on" />
</selector>
SOURCE CODE [custom_ratingbar_empty.xml] is
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:state_window_focused="true"
android:drawable="@drawable/star_off" />
<item android:state_focused="true"
android:state_window_focused="true"
android:drawable="@drawable/star_off" />
<item android:state_selected="true"
android:state_window_focused="true"
android:drawable="@drawable/star_off" />
<item android:drawable="@drawable/star_off" />
</selector>
SOURCE CODE [CustomRatingBarExample.java] is
package Com.CustomRatingBarExample;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RatingBar;
public class CustomRatingBarExample extends Activity
{
RatingBar rb;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
rb = (RatingBar) findViewById(R.id.ratingbar);
rb.setRating(3.5f);
}
}Note:
Save the file [styles.xml] in values folder. This folder already has a file [strings.xml].
Save the files [custom_ratingbar.xml], [custom_ratingbar_filled.xml], [custom_ratingbar_empty.xml] in drawable folder.
Save the images [custom ratings icon – star_on.png, star_off.png] in the drawable folder.
The OUTPUT will be
Thank you so much for the tutorial.
ReplyDeletethank you very much.
ReplyDeleteGreat tutorual, but how do I get a smaller or bigger style, without a new icon set and new xml files?
ReplyDeletenice bro
ReplyDeleteGreat Bro,
ReplyDeletecan we have an example, to give ratings to items and show high rated items in another activity using ListView
Great Tutorial ,Thanks
ReplyDeleteIts showing error,while using this code.
ReplyDeleteerror---error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Widget.RatingBar.Small'.
how i solve this error?
my manifest.xml version is
i checked my project properties also all are correct.
i am using android 4.2 version
try another parent: http://stackoverflow.com/questions/10876532/android-adt-18-0-styles
ReplyDeleteHow to bring this in dynamic control creation.
ReplyDeleteExcellent Dude......
ReplyDeletewhy don't you provide download button?
ReplyDeleteThank you! Really helpful :)
ReplyDeletemay i know why the star is lock ? cannot change the rate
ReplyDeleteThank you, it helped me a lot!
ReplyDeleteIt works ! Thank you
ReplyDeletedont know why. did EXACTLY as written. showed nothing, empty where rating bar used to be. switched back to regular rating bar- its there...help :(((
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteDid you download png files & put it on drawable folder ?
ReplyDeleteok, finally got it to appear. now I've got a new problem- as in youre example the rating bar is in a vertical linear layout with a textView above it. no matter the height i set for the rating bar, wrap contnet, 50dp, and many more- it's always cut halfway in the emulator. if i put it in a layout with nothing above it- i get six stars and counting (i can see the beginning of another one that is cut width wise). and that's despite the 5 numStar i set...any suggestions?
ReplyDelete.maybe you have rendering problems with you emulator theme. Try to change it otherwise set numstars with java code (not xml).
ReplyDelete