Material Design RatingBar with better appearance

Overview

MaterialRatingBar

Icon

Material Design RatingBar with better appearance, compatible with Android 3.0+.

Why MaterialRatingBar?

  • Consistent appearance on Android 3.0+.
  • Extends framework RatingBar.
  • Get the 2dp star border background as in Material Icons and Google apps.
  • Correct custom tinting across platforms.
  • Able to render correctly when layout_width is set to match_parent, as in Google Play Store.
  • Able to scale correctly when layout_height is set to values other than 16dp, 36dp and 48dp.
  • Able to display ratings such as 4.3 correctly, which will be filled to 4.5 by framework's incorrect implementation.
  • Avoid framework's sunken half star visual glitch.
  • Used as a drop-in replacement for framework RatingBar.

Preview

Google Play

Sample APK

Sample app

Integration

Gradle:

implementation 'me.zhanghai.android.materialratingbar:library:1.4.0'

Usage

Simply replace your RatingBar with MaterialRatingBar, and remember to apply a corresponding style for correct behavior.

For example, to create a normal MaterialRatingBar:

<me.zhanghai.android.materialratingbar.MaterialRatingBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/Widget.MaterialRatingBar.RatingBar" />

In order to make your RatingBar take the correct and consistent size on all versions, you will always need to use one of the styles from this library. The trick inside it is android:minHeight and android:maxHeight that controls the drawable height.

You can checkout more small or indicator variants in styles.xml.

You can use app:mrb_fillBackgroundStars to control whether background stars are filled, otherwise it defaults to the same value as android:isIndicator which is the behavior of Google apps.

8 tint-related attributes such as app:mrb_progressTint and app:mrb_progressTintMode are also supported so that they can control the tinting of rating drawables. The default tint color is ?colorControlActivated, and the default tint mode is src_in.

An OnRatingChangeListener interface is also added to MaterialRatingBar, which enables callback while user is dragging, just as the listener in SeekBar.

For a detailed example, you can refer to the sample app's layout, where you can find examples such as tinting and wide layout.

Design

Filled star or star border

The framework's RatingBar uses filling stars with grey color as track, however as per the Material Icons site, star border icons are given.

Material Icons

And as for the Google Play Store and Google I/O app, they are both using the star borders as track.

Google Play Store Google I/O

With Google's design practice and aesthetic considerations taken into account, I decided to use the star border style.

Star size

Google Play Store has stars of optical size 24dp, while Google I/O app and framework Widget.Material.RatingBar.Indicator have stars of size 36dp (which are of optical size 30dp). (The framework's default size of 64dp is ridiculously large and thus not taken into consideration.)

Also noticing that the Material Icons site gives icons of 24dp (optical 20dp) and 36dp (optical 30dp), I decided to stick to the 36dp approach which is also visually pleasant.

Star border width

The ring for radio button in Material Design has a width of 2dp, and with experiments on other border widths, I decided to adopt the 2dp border width.

The star border icon is drawn with the help of Inkscape, by downloading the star icon SVG from Material Icons, duplicating the outer border path of the star, setting a stroke of 4dp, running stroke to path on it, extracting the inner border path, and finally combining this path and the original outer border path.

Wide layout

Framework RatingBar gives erroneous rendering for RatingBar when layout_width is set to match_parent by tiling the stars without any gap. Since Google Play Store employed the wide design, I implemented it inside this library as well, so that match_parent will work properly for MaterialRatingBar.

Dragging

Google Play Store and Google I/O app both used an implementation other than RatingBar, which means dragging on the bar across stars won't work (it is the functionality of AbsSeekBar). I think this is a handy way of interaction for users, and it enables the setting of 0 star which can be useful if you want to enable users to reset their rating to unrated.

License

Copyright 2016 Zhang Hai

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • In Android 10 not working

    In Android 10 not working

    Hello sir, I have to implement your code but in android 10 not working. When I have run application throw exception like Fatal Exception: android.view.InflateException: Binary XML file Error inflating class me.zhanghai.android.materialratingbar.MaterialRatingBar

    Thanks Jaydeep Dhamecha

    bug duplicate 
    opened by jaydeep2158 12
  • Change star color in onRatingChanged

    Change star color in onRatingChanged

    I'd like to change the color of all the stars as the rating value changes. I have ranges where a rating of [0-1] is red, (1-3) is yellow and [3-5] is green.

    I added an OnRatingChangeListener to my class, but I can't figure out the proper way to set the color for the stars. Can you provide a specific example for how to programmatically change the fill color of the stars?

    I think it has to do with the tint color, but I couldn't find good documentation to explain this. Thanks in advance!

    question 
    opened by matthewkrueger 7
  • Different Border Color?

    Different Border Color?

    Is it possible to have a different border color? I see some styles for RatingBar that have many different colors and styles, but the border seems to be something very much bound to the Progress Drawable or the Indeterminate Drawable.

    It would be great, for me, being able to control the border color at runtime.

    question 
    opened by JuanCarniglia 6
  • Couldn't fully drag to remove rating

    Couldn't fully drag to remove rating

    I don't know if it's bug or intentional. But i can't remove rating unless i give some margin to the view.

        <me.zhanghai.android.materialratingbar.MaterialRatingBar
            style="@style/Widget.MaterialRatingBar.RatingBar"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" />
    
    opened by malikbilal1997 5
  • Fill Stars Background if isIndicator=true

    Fill Stars Background if isIndicator=true

    Hi, default value for fillBackgroundStars is 'isIndicator' value and must be changed to false.

    In MaterialRatingBar.java, line 101

    boolean fillBackgroundStars = a.getBoolean( R.styleable.MaterialRatingBar_mrb_fillBackgroundStars, isIndicator());

    question 
    opened by farzadfarazmand 5
  • half star is not showing correctly when isIndicator is true

    half star is not showing correctly when isIndicator is true

    It seems the rating stars are nor showing correctly when isIndicator set to true for example, when I set rating to 4.5 it shows 5 starts instead of 4.5 stars

    question 
    opened by YLPeng 4
  • mrb_secondaryProgressTint  color issue

    mrb_secondaryProgressTint color issue

    I have set color in mrb_secondaryProgressTint but it does not apply.I want to apply empty star color.But how can apply empty(Non-progress) star color? (Now, It looks transparent. I want to apply color in empty star)

    bug 
    opened by ChetnaNakum 4
  • Android Naugat rating count is wrong in OnRatingBarChangeListener

    Android Naugat rating count is wrong in OnRatingBarChangeListener

    Android version : 7.0 Lib Version : compile 'me.zhanghai.android.materialratingbar:library:1.0.2'

    The callback method is giving wrong rating count. When i am clicking 1 star count is coming as 2. This is happening with each star.

    Rating is 1.000000 : fromUser true Rating is 2.000000 : fromUser true Rating is 4.000000 : fromUser true Rating is 5.000000 : fromUser true Rating is 3.000000 : fromUser true

    If i click on the first half of the star Rating count is proper. If i click on second half then it adds +1 to count and sets it in UI.

    Activity :

     ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
          @Override
          public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
    
            Log.i(TAG,String.format("Rating is %f : fromUser %b",rating,fromUser));
    
            mTextView.setText(String.format("Rating is %f ",rating));
    
          }
        });
    

    XML :

    <me.zhanghai.android.materialratingbar.MaterialRatingBar
          android:id="@+id/ratingBar2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:isIndicator="false"
          android:stepSize="1"
          android:rating="5"
         
      />
    
    question 
    opened by nieldeokar 4
  • Crash on Android 10 & Samsung

    Crash on Android 10 & Samsung

    Hi! We began facing that crash:

    Caused by java.lang.NullPointerException: Attempt to read from field 'android.content.res.ColorStateList me.zhanghai.android.materialratingbar.MaterialRatingBar$c.a' on a null object reference
           at me.zhanghai.android.materialratingbar.MaterialRatingBar.getSupportProgressTintList + 1(SourceFile:1)
           at me.zhanghai.android.materialratingbar.MaterialRatingBar.getProgressTintList + 2(SourceFile:2)
           at android.widget.AbsSeekBar.<init> + 245(AbsSeekBar.java:245)
           at android.widget.RatingBar.<init> + 92(RatingBar.java:92)
           at android.widget.RatingBar.<init> + 88(RatingBar.java:88)
           at android.widget.RatingBar.<init> + 124(RatingBar.java:124)
           at me.zhanghai.android.materialratingbar.MaterialRatingBar.<init> + 4(SourceFile:4)
           at java.lang.reflect.Constructor.newInstance0(Constructor.java)
           at java.lang.reflect.Constructor.newInstance + 343(Constructor.java:343)
           at android.view.LayoutInflater.createView + 854(LayoutInflater.java:854)
           at android.view.LayoutInflater.createView + 776(LayoutInflater.java:776)
    

    (unfortunately we lost proguard mappings for that build)

    It fires only on 10th of Android and as far as we can see in crashlytic only on samsung yet.

    We have following usage:

    <me.zhanghai.android.materialratingbar.MaterialRatingBar
                        style="@style/RatingBarSmall"
                        android:id="@+id/film_details_rating_bar"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/film_details_rating_title"
                        tools:rating="5.4"
                        android:layout_marginTop="8dp"
                        android:layout_marginBottom="8dp" />
    

    And the style is:

    <style name="RatingBarSmall" parent="Widget.MaterialRatingBar.RatingBar.Indicator.Small">
            <item name="android:clickable">false</item>
            <item name="android:focusable">false</item>
            <item name="android:isIndicator">true</item>
            <item name="android:max">10</item>
            <item name="android:numStars">10</item>
            <item name="android:stepSize">0.1</item>
            <item name="android:progressTint" tools:ignore="NewApi">#F5BC00</item>
            <item name="android:secondaryProgressTint" tools:ignore="NewApi">#00000000</item>
        </style>
    
    bug 
    opened by busylee999 3
  • Android 6.0 crashes when finding minSdkVersion from ApplicationInfo

    Android 6.0 crashes when finding minSdkVersion from ApplicationInfo

    Hello - a crash has popped up in production coming from this library. Here's the stack trace:

    Fatal Exception: java.lang.NoSuchFieldError: No instance field minSdkVersion of type I in class Landroid/content/pm/ApplicationInfo; or its superclasses (declaration of 'android.content.pm.ApplicationInfo' appears in /system/framework/framework.jar) at me.zhanghai.android.materialratingbar.MaterialRatingBar.logRatingBarTintWarning(MaterialRatingBar.java:302) at me.zhanghai.android.materialratingbar.MaterialRatingBar.setProgressTintList(MaterialRatingBar.java:164) at com.myapp.dialog.CourseRatingDialogFragment.updateRatingStarColor(CourseRatingDialogFragment.java:141) at com.myapp.dialog.CourseRatingDialogFragment.onRatingChanged(CourseRatingDialogFragment.java:67) at me.zhanghai.android.materialratingbar.MaterialRatingBar.setSecondaryProgress(MaterialRatingBar.java:613) at android.widget.RatingBar.updateSecondaryProgress(RatingBar.java:275) at android.widget.RatingBar.onProgressRefresh(RatingBar.java:255) at android.widget.ProgressBar.doRefreshProgress(ProgressBar.java:1390) at android.widget.ProgressBar.refreshProgress(ProgressBar.java:1406) at android.widget.ProgressBar.setProgress(ProgressBar.java:1452) at android.widget.AbsSeekBar.setProgress(AbsSeekBar.java:1273) at android.widget.AbsSeekBar.trackTouchEvent(AbsSeekBar.java:1173) at android.widget.AbsSeekBar.onTouchEvent(AbsSeekBar.java:1065) at android.view.View.dispatchTouchEvent(View.java:9998) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2841) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2458) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2841) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2458) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2841) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2458) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2841) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2458) at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2831) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1863) at android.app.Dialog.dispatchTouchEvent(Dialog.java:982) at com.myapp.dialog.AbstractDialogFragment$1.dispatchTouchEvent(AbstractDialogFragment.java:55) at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2792) at android.view.View.dispatchPointerEvent(View.java:10233) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5398) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5234) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4674) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4727) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4693) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4835) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4701) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4892) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4674) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4727) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4693) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4701) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4674) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7360) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7238) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7199) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7470) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) at android.os.MessageQueue.nativePollOnce(MessageQueue.java) at android.os.MessageQueue.next(MessageQueue.java:323) at android.os.Looper.loop(Looper.java:143) at android.app.ActivityThread.main(ActivityThread.java:7224) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

    Here's the applicable code in MaterialRatingBar:

        private void logRatingBarTintWarning() {
            if (getContext().getApplicationInfo().minSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
                return;
            }
            Log.w(TAG, "Non-support version of tint method called, this is error-prone and will crash" +
                    " below Lollipop if you are calling it as a method of RatingBar instead of" +
                    " MaterialRatingBar");
        }
    

    So far, the crash has happened 100% on Samsung devices that are running Android 6.0. Any advice is appreciated, I'll have to look for a new library or fork this one if there isn't a quick fix. Thanks!

    opened by matthewkrueger 3
  • I wonder if it is possible to remove empty star border altogether? also is it possible to change colour of empty stars ? (to match the border)

    I wonder if it is possible to remove empty star border altogether? also is it possible to change colour of empty stars ? (to match the border)

    something like Normal layout : Framework Implementation (first rating type in the attached image) ? I tried this but no luck :

      app:mrb_progressBackgroundTint="@color/colorGrey"
      app:mrb_indeterminateTint="@color/colorGrey"
      app:mrb_secondaryProgressTint="@color/colorGrey"
    

    sample_app

    question 
    opened by bastami82 3
  • Verification failed on class me.zhanghai.android.materialratingbar.ClipDrawableCompat

    Verification failed on class me.zhanghai.android.materialratingbar.ClipDrawableCompat

    2022-05-02 11:46:41.387 3623-3623/? E/art: Verification failed on class me.zhanghai.android.materialratingbar.ClipDrawableCompat in /data/app/com.shixin.toolbox-2/base.apk:classes2.dex because: Verifier rejected class me.zhanghai.android.materialratingbar.ClipDrawableCompat due to bad method void me.zhanghai.android.materialratingbar.ClipDrawableCompat.setTintList(android.content.res.ColorStateList) 安卓5.1.1 发布版(debug版没问题)

    opened by lishangwl 0
  • MaterialRatingDrawable Crash

    MaterialRatingDrawable Crash

    Hi,there will crash on the Nexus 5x and Huawei Enjoy 9s My MaterialRatingBar version is 1.4.0 is the latest This is crash log

    Fatal Exception: android.view.InflateException Binary XML file line #9: Binary XML file line #51: Error inflating class com.xxx.xxx.module_base.ui.widget.ratingbar.CustomRatingBar android.view.LayoutInflater.createView (LayoutInflater.java:633) android.view.LayoutInflater.inflate (LayoutInflater.java:414) com.xxx.xxx.module_base.ui.widget.adapter.BaseRecyclerViewAdapter.onCreateViewHolder (BaseRecyclerViewAdapter.java:26) com.yanzhenjie.recyclerview.AdapterWrapper.onCreateViewHolder (AdapterWrapper.java:123) androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder (RecyclerView.java:7046) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:698)

    Caused by android.view.InflateException Binary XML file line #51: Error inflating class com.xxx.xxx.module_base.ui.widget.ratingbar.CustomRatingBar java.lang.reflect.Constructor.newInstance (Constructor.java) android.view.LayoutInflater.inflate (LayoutInflater.java:414) com.xxx.xxx.module_base.ui.widget.adapter.BaseRecyclerViewAdapter.onCreateViewHolder (BaseRecyclerViewAdapter.java:26) com.yanzhenjie.recyclerview.AdapterWrapper.onCreateViewHolder (AdapterWrapper.java:123) androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder (RecyclerView.java:7046) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:698) Caused by android.content.res.Resources$NotFoundException Resource ID #0x7f08019b android.content.res.Resources.getValue (Resources.java:1266) androidx.appcompat.content.res.AppCompatResources.getDrawable (AppCompatResources.java:104) me.zhanghai.android.materialratingbar.MaterialRatingDrawable.createLayerDrawableWithTintColor (MaterialRatingDrawable.java:43) me.zhanghai.android.materialratingbar.MaterialRatingDrawable.createLayerDrawableWithTintAttrRes (MaterialRatingDrawable.java:54) me.zhanghai.android.materialratingbar.MaterialRatingDrawable. (MaterialRatingDrawable.java:23) me.zhanghai.android.materialratingbar.MaterialRatingBar.init (MaterialRatingBar.java:105) me.zhanghai.android.materialratingbar.MaterialRatingBar. (MaterialRatingBar.java:52) com.xxx.xxx.module_base.ui.widget.ratingbar.CustomRatingBar. (CustomRatingBar.java:14) com.xxx.xxx.module_base.ui.widget.ratingbar.CustomRatingBar. (CustomRatingBar.java:13) com.xxx.xxx.module_base.ui.widget.ratingbar.CustomRatingBar. (CustomRatingBar.java:13) java.lang.reflect.Constructor.newInstance (Constructor.java) android.view.LayoutInflater.inflate (LayoutInflater.java:414) com.xxx.xxx.module_base.ui.widget.adapter.BaseRecyclerViewAdapter.onCreateViewHolder (BaseRecyclerViewAdapter.java:26) com.yanzhenjie.recyclerview.AdapterWrapper.onCreateViewHolder (AdapterWrapper.java:123) androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder (RecyclerView.java:7046) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:698)

    This is CustomRatingBar code:

    class CustomRatingBar @JvmOverloads constructor(
            context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
    ) : MaterialRatingBar(context, attrs, defStyleAttr)
    

    @zhanghai

    opened by keepmovingljzy 15
  • If we click between the two stars, both star will get clicked

    If we click between the two stars, both star will get clicked

    WhatsApp Image 2020-12-28 at 12 53 37 PM

    When i click between 2 & 3 star (highlighted by blue color), both are getting selected

    XML code:- <me.zhanghai.android.materialratingbar.MaterialRatingBar android:id="@+id/feedbackRatingBar" style="@style/customRatingBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:indeterminateTint="#FFCB07" android:numStars="3" android:progressTint="#FFCB07" android:secondaryProgressTint="#00000000" android:stepSize="0.01" />

    Code: feedbackRatingBar?.setOnRatingBarChangeListener { _, rating, fromUser -> if(fromUser){ feedbackRatingBar?.rating = ceil(rating) } }

    question 
    opened by shubham696 8
  • Stars not reflecting user input

    Stars not reflecting user input

    I think this is a general issue with the RatingBar for Android, but wanted to post here to be sure as I couldn't find a definitive answer.

    We have the MaterialRatingBar in our app (love it btw), using width=match_parent.

    On some devices, when the user taps 1 star, the 2nd star updates. If they tap the 2nd star, the 3rd updates etc. User can never select 1 star and the star they select is never the correct one.

    Samsung devices seem to suffer the worst with this issue. It works fine as well on plenty of devices. If we get rid of match_parent, it seems to work on all devices too.

    bug help wanted 
    opened by samcackett 7
  • MaterialRatingBar is not showing on ListView Item placed in DrawerLayout NavigationView.

    MaterialRatingBar is not showing on ListView Item placed in DrawerLayout NavigationView.

    I have placed the xml Of MaterialDesignRatingBar in a expandible lisview item and it is not showing at all. its working on my other listviews with in Activities and fragments.

    <me.zhanghai.android.materialratingbar.MaterialRatingBar android:id="@+id/ratingBar" style="@style/Widget.MaterialRatingBar.RatingBar" android:layout_width="@dimen/_150sdp" android:layout_height="@dimen/_25sdp" android:layout_centerInParent="true" android:rating="5" android:layout_marginLeft="@dimen/_5sdp" android:layout_marginStart="@dimen/_5sdp" />

    I don't want to go for another custom library for rating bar because i have used it in my project.

    bug 
    opened by Maqsood007 9
Releases(v1.4.0)
Owner
Hai Zhang
Hai Zhang
Material Design ProgressBar with consistent appearance

MaterialProgressBar Material Design ProgressBar with consistent appearance on Android 4.0+. Why MaterialProgressBar? Consistent appearance on Android

Hai Zhang 2.2k Jan 1, 2023
Default colors and dimens per Material Design guidelines and Android Design guidelines inside one library.

Material Design Dimens Default colors and dimens per Material Design guidelines and Android Design guidelines inside one library. Dimens Pattern: R.di

Dmitry Malkovich 1.4k Jan 3, 2023
A library to bring fully animated Material Design components to pre-Lolipop Android.

Material MaterialLibrary is an Open Source Android library that back-port Material Design components to pre-Lolipop Android. MaterialLibrary's origina

Rey Pham 6k Dec 21, 2022
Material Design icons by Google

Material design icons Material design icons is the official icon set from Google. The icons are designed under the material design guidelines. 4.0.0 U

Google 47.1k Jan 9, 2023
The flexible, easy to use, all in one drawer library for your Android project. Now brand new with material 2 design.

MaterialDrawer ... the flexible, easy to use, all in one drawer library for your Android project. What's included ?? • Setup ??️ • Migration Guide ??

Mike Penz 11.6k Dec 27, 2022
A Material Design ViewPager easy to use library

MaterialViewPager Material Design ViewPager easy to use library Sample And have a look on a sample Youtube Video : Youtube Link Download In your modul

Florent CHAMPIGNY 8.2k Jan 1, 2023
Floating Action Button for Android based on Material Design specification

FloatingActionButton Yet another library for drawing Material Design promoted actions. Features Support for normal 56dp and mini 40dp buttons. Customi

Zendesk 6.4k Dec 26, 2022
EditText in Material Design

MaterialEditText NOTE: 2.0 is NOT BACKWARDS COMPATIBLE! See more on wiki or 中文看这里 AppCompat v21 makes it easy to use Material Design EditText in our a

Kai Zhu 6.1k Dec 30, 2022
Implementation of Ripple effect from Material Design for Android API 9+

RippleEffect ExpandableLayout provides an easy way to create a view called header with an expandable view. Both view are external layout to allow a ma

Robin Chutaux 4.9k Dec 30, 2022
Material Design implementation for Android 4.0+. Shadows, ripples, vectors, fonts, animations, widgets, rounded corners and more.

Carbon Material Design implementation for Android 4.0 and newer. This is not the exact copy of the Lollipop's API and features. It's a custom implemen

null 3k Jan 9, 2023
Navigation Drawer Activity with material design style and simplified methods

MaterialNavigationDrawer Navigation Drawer Activity with material design style and simplified methods       It requires 10+ API and android support v7

Fabio Biola 1.6k Jan 5, 2023
Android drawer icon with material design animation

LDrawer Android drawer icon with material design animation Note Basically same as appcompat_v7 version 21, you can use appcompat_v7 compile 'com.andro

Hasan Keklik 1.4k Dec 25, 2022
Custom Tabs with Material Design effects

MaterialTabs Custom Tabs with Material Design animations for pre-Lollipop devices       Download example apk It requires 14+ API and android support v

Fabio Biola 1.4k Dec 29, 2022
[] Android Library that implements Snackbars from Google's Material Design documentation.

DEPRECATED This lib is deprecated in favor of Google's Design Support Library which includes a Snackbar and is no longer being developed. Thanks for a

null 1.5k Dec 16, 2022
Android Sample Project with Material Design and Toolbar.

AndroidMaterialDesignToolbar -- PROJECT IS NOT SUPPORTED Android Sample Project with Material Design and Toolbar. Project use Appcompat library for ma

kemal selim tekinarslan 713 Nov 11, 2022
Custom drawer implementation for Material design apps.

material-drawer Custom drawer implementation for Material design apps. Demo A demo app is available on Google Play: Screenshots Fixed items Select pro

Jan Heinrich Reimer 600 Nov 18, 2022
Android drawer icon with material design animation

LDrawer Android drawer icon with material design animation Note Basically same as appcompat_v7 version 21, you can use appcompat_v7 compile 'com.andro

Hasan Keklik 1.4k Dec 25, 2022
Floating Action Button for Android based on Material Design specification

FloatingActionButton Yet another library for drawing Material Design promoted actions. Features Support for normal 56dp and mini 40dp buttons. Customi

Zendesk 6.4k Jan 3, 2023
A library support form with material design, construct same with Android UI Framework

SwingUI A slight Java Swing library support form with material design, construct same with Android UI Framework writen in Kotlin Supported: 1. Screen:

Cuong V. Nguyen 3 Jul 20, 2021