If you do not want Default RatingBar implementation then you can customize it by creating your own layouts and styles for it.
You need to get 3-star images to be added to your drawable folder.
1. A Empty (off) star image.
2. A Half Filled Star image.
3. A Fully Filled Star image.
Now create a custom XML for RatingBar in Drawable folder,
<?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_blank"/>
<item
android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/star_blank"/>
<item
android:id="@+android:id/progress"
android:drawable="@drawable/star_filled"/>
</layer-list>
start_blank.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/star_off"
android:state_pressed="true"
android:state_window_focused="true"/>
<item android:drawable="@drawable/star_off"
android:state_focused="true"
android:state_window_focused="true"/>
<item android:drawable="@drawable/star_off"
android:state_selected="true"
android:state_window_focused="true"/>
<item android:drawable="@drawable/star_off"/>
</selector>
star_filled.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/star"
android:state_pressed="true"
android:state_window_focused="true"/>
<item android:drawable="@drawable/star"
android:state_focused="true"
android:state_window_focused="true"/>
<item android:drawable="@drawable/star"
android:state_selected="true"
android:state_window_focused="true"/>
<item android:drawable="@drawable/star"/>
</selector>
Add the following to style.xml
<style name="customRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/rating_custom_bar</item>
<item name="android:minHeight">30dip</item>
<item name="android:maxHeight">30dip</item>
</style>
Layout.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.code2care.example.customratingbarexample.MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="108dp"
android:text="@string/header_text" />
<RatingBar
android:id="@+id/ratingBar1"
style="@style/customRatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="56dp" />
<TextView
android:id="@+id/ratingMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_centerVertical="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
MainActivity.java
package com.code2care.example.customratingbarexample;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.TextView;
public class MainActivity extends Activity {
RatingBar ratingBar;
TextView rateMessage;
String ratedValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ratingBar = (RatingBar) findViewById(R.id.ratingBar1);
rateMessage = (TextView) findViewById(R.id.ratingMessage);
ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
System.out.println("Hwre");
ratedValue = String.valueOf(ratingBar.getRating());
rateMessage.setText("Rating : "
+ ratedValue + "/5");
}
});
}
}
⛏️ You can download the source code from GitHub: https://github.com/code2care/CustomRatingBarExample
More Posts related to Android,
- Increase Android Emulator Timeout time
- Android : Remove ListView Separator/divider programmatically or using xml property
- Error : Invalid key hash.The key hash does not match any stored key hashes
- How to Change Android Toast Position?
- Android Alert Dialog with Checkboxes example
- Android : No Launcher activity found! Error
- Android Development: Spinners with Example
- Failed to sync Gradle project Error:failed to find target android-23
- INSTALL_FAILED_INSUFFICIENT_STORAGE Android Error
- Disable Fading Edges Scroll Effect Android Views
- How to create Toast messages in Android?
- Channel 50 SMSes received every few minutes Android Phones
- Android xml error Attribute is missing the Android namespace prefix [Solution]
- Create Custom Android AlertDialog
- How To Disable Landscape Mode in Android Application
- Android Development - How to switch between two Activities
- incorrect line ending: found carriage return (\r) without corresponding newline (\n)
- Generate Facebook Android SDK keyhash using java code
- Android Error Generating Final Archive - Debug Certificate Expired
- 21 Useful Android Emulator Short-cut Keyboard Keys
- Android RatingBar Example
- 11 Weeks of Android Online Sessions-15-Jun-to-28-Aug-2020
- Download interrupted: Unknown Host dl-ssl.google.com Error Android SDK Manager
- fill_parent vs match_parent vs wrap_content
- Android : Connection with adb was interrupted 0 attempts have been made to reconnect
More Posts:
- Command to know the installed Debian version? - Linux
- Make Android View Scrollable both Horizontally and Vertically - Android
- How to Know Version of Windows Terminal - Windows
- Installing vue.js in Laravel 8 - PHP
- Python: Determine Variable Type Example - Python
- How to format or prettify XML in Notepad++ - NotepadPlusPlus
- How to Subscribe to Google Nest Aware on iPhone - Google
- Get count of SharePoint List or Document Library Items using PowerShell - SharePoint