Material Design implementation for Android 4.0+. Shadows, ripples, vectors, fonts, animations, widgets, rounded corners and more.

Overview

Android Arsenal   Maven Central   JitPack   Dropbox   Can I drop Jetifier?

Twitter

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 implementation of the most useful things as shown in the design specification. Carbon tries to:

  • make things easier (specify cornerRadius='dp' instead of creating an xml and/or a ViewOutlineProvider)
  • make it all work and look the same on all APIs (like CheckBox's left padding)
  • really backport features (don't use gradients for shadows!)
  • fix Android's everlasting bugs (FrameLayout ignores child's padding when no gravity is set)

What's new

  • custom item layouts for BottomNavigationView, TabLayout and NavigationView
  • DayNight themes
  • updated control colors
  • fixed color animations, background tint, menu inflation, shadow transformations

Features

Android 4.x
  • generated, animated shadows with elevation system
  • the touch ripple
  • rounded corners with content clipping
  • circular reveal
  • theme xml attribute
  • widget and drawable tinting
  • font resources
  • edge effects
All APIs
  • simple to use xml attributes for stroke, cut corners, rounded corners and ripples
  • colored shadows
  • brightness/saturation fade
  • SVG support (with transformations, text, gradients, etc.)
Useful extensions and bugfixes
  • html text
  • percent layouts, anchors, colored insets
  • view stroke
  • visibility animations
  • color state animations
  • ttf/otf fonts
  • text auto size
  • TextMarker
Material constants, widgets and components
  • colors, dimensions, typography
  • ready-to-use rows and adapters for RecyclerView
  • DropDown, FloatingActionMenu, RangeSeekBar, ExpandableRecyclerView, FlowLayout, TableView, BackdropLayout, Banner, BottomNavigationView, TabLayout

Samples

Installation

FAQ

Changelog

JavaDoc

Articles

License

Copyright 2015 Marcin Korniluk 'Zielony'

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
  • RecyclerView EdgeEffect drawn below children

    RecyclerView EdgeEffect drawn below children

    I use this library in my app. I have also set the overscroll mode to always but still edgeeffect is not working. Library - https://github.com/h6ah4i/android-advancedrecyclerview

    bug 
    opened by Teja-Konjeti 23
  • Borderless Ripple not being rendered when setRippleDrawable is called Multiple Times

    Borderless Ripple not being rendered when setRippleDrawable is called Multiple Times

    The Borderless Ripple being rendered by your library for ImageButton (FloatingActionButton in your library) is much smaller than the ripple rendered by android system.

    bug 
    opened by Teja-Konjeti 17
  • Shadows being cut when using a LinearLayout parent

    Shadows being cut when using a LinearLayout parent

    I created a custom TextInput widget.

    It is a LinearLayout, with a FrameLayout inside it. The shadow is set to the FrameLayout inside it. And there are TextViews on top and bottom of the FrameLayout

    It works fine with Padding set to the parent of this TextInput widget when extending android.widget.LinearLayout, but when I make it extend carbon.widget.LinearLayout the shadows of the FrameLayout inside it get cut by the padding. Even though the parent of everything is a carbon.widget.LinearLayout

    I have set

    clipChildren = false
    clipToPadding = false
    clipToOutline = false
    

    On both the TextInput, the FrameLayout, and the parent LinearLayout. But it's still the same behavior

    bug 
    opened by ahmaducg 15
  • Shadow works not well

    Shadow works not well

    Hi, Zielony, I am luckly to use the Carbon project, but I missing the problem that the shadow was works not very well, below is my ui, that page is maked by copy your sample app's activity_shadow.xml file and I delete the last line to avoid some issues (it's not important).

    Looking forward to your help~ Thank you very much~

    TIM截图20190812185420

    help wanted 
    opened by codingCavalier 15
  • Carbon CardView Shadow Does Not Appear in Pre Lollipop Devices

    Carbon CardView Shadow Does Not Appear in Pre Lollipop Devices

    I am using Carbon to create Shadow by using it's Elevation property

    This CardView is used as RecyclerView Item view holder. In Lollipop devices, the shadow appears, but it doesn't in Jellybean devices.

    <carbon.widget.CardView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/cardView"
        android:background="@color/WHITE_COLOR"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        app:carbon_colorBackground="@color/WHITE_COLOR"
        app:carbon_cornerRadius="@dimen/CORNER_RADIUS"
        app:carbon_elevation="3dp">
    
    </carbon.widget.CardView>
    

    Anything I am missing here?

    help wanted 
    opened by Jayvd 14
  • Invisible checkbox and ProgressBar

    Invisible checkbox and ProgressBar

    I've updated from 0.11.0 version to 0.12.0 and I don't why, boxes from checkboxes doesn't show up on Android 5.x and over.

    error2

    error3

    If I downgrade back to 0.11.0, then checkboxes works fine.

    bug help wanted 
    opened by HectorFGarcia 13
  • Update ripple animation to Android 5.1's

    Update ripple animation to Android 5.1's

    The default ripple effect is slightly different in Android 5.1. The ripple moves outwards faster and seems to not slow down (as much) as it reaches the edges like it did in 5.0. I think that's the only difference. It would be nice to have it match the new behavior.

    enhancement 
    opened by DSteve595 12
  • Android dependency 'com.android.support.constraint:constraint-layout' has different version for the compile (1.0.2) and runtime (1.1.0) classpath. You should manually set the same version via DependencyResolution

    Android dependency 'com.android.support.constraint:constraint-layout' has different version for the compile (1.0.2) and runtime (1.1.0) classpath. You should manually set the same version via DependencyResolution

    Android dependency 'com.android.support.constraint:constraint-layout' has different version for the compile (1.0.2) and runtime (1.1.0) classpath. You should manually set the same version via DependencyResolution

    help wanted 
    opened by SephirothLT 11
  • MultiDex problem

    MultiDex problem

    When I add this two lines:

    renderscriptTargetApi 20 renderscriptSupportModeEnabled true

    I'm having this problem:

    Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'.

    java.util.zip.ZipException: duplicate entry: android/support/annotation/Keep.class

    What can I do to prevent that. I can't turn multiDex off.

    bug keep in mind 
    opened by HectorFGarcia 11
  • Using Carbon's FrameLayout as a container for fragments results in an ArrayIndexOutOfBoundsException

    Using Carbon's FrameLayout as a container for fragments results in an ArrayIndexOutOfBoundsException

    Using 0.7.2.

    I have (in a DrawerLayout, though I don't think it matters) a carbon.widget.FrameLayout that I'm using as a container for FragmentTransactions. I do this in my activity:

    getSupportFragmentManager().beginTransaction()
                            .disallowAddToBackStack()
                            .replace(R.id.content, fragment)
                            .commit();
    

    Here's my layout:

    <carbon.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/*removed*"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipChildren="false"
        android:fitsSystemWindows="true">
    
        <carbon.widget.FrameLayout
            android:id="@+id/content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
        <carbon.widget.ScrimInsetsLayout
            android:id="@+id/*removed*"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="@android:color/white"
            android:fitsSystemWindows="true"
            app:carbon_elevation="4dp"
            app:carbon_insetForeground="#4000">
    
            <fragment
                android:id="@+id/fragment_drawer"
                android:name="*removed*.DrawerFragment"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:layout="@layout/wallet_drawer" />
        </carbon.widget.ScrimInsetsLayout>
    </carbon.widget.DrawerLayout>
    

    The first fragment transaction works fine. However, a subsequent one gives the following crash:

        java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
                at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3195)
                at carbon.widget.FrameLayout.dispatchDraw(FrameLayout.java:100)
                at android.view.View.draw(View.java:15117)
                at android.widget.FrameLayout.draw(FrameLayout.java:592)
                at carbon.widget.FrameLayout.draw(FrameLayout.java:236)
                at android.view.View.updateDisplayListIfDirty(View.java:14048)
                at android.view.View.getDisplayList(View.java:14071)
                at android.view.View.draw(View.java:14838)
                at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
                at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:1086)
                at carbon.widget.DrawerLayout.drawChild(DrawerLayout.java:168)
                at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
                at carbon.widget.DrawerLayout.dispatchDraw(DrawerLayout.java:99)
                at android.view.View.draw(View.java:15117)
                at carbon.widget.DrawerLayout.draw(DrawerLayout.java:235)
                at android.view.View.updateDisplayListIfDirty(View.java:14048)
                at android.view.View.getDisplayList(View.java:14071)
                at android.view.View.draw(View.java:14838)
                at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
                at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
                at android.view.View.updateDisplayListIfDirty(View.java:14043)
                at android.view.View.getDisplayList(View.java:14071)
                at android.view.View.draw(View.java:14838)
                at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
                at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
                at android.view.View.updateDisplayListIfDirty(View.java:14043)
                at android.view.View.getDisplayList(View.java:14071)
                at android.view.View.draw(View.java:14838)
                at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
                at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
                at android.view.View.updateDisplayListIfDirty(View.java:14043)
                at android.view.View.getDisplayList(View.java:14071)
                at android.view.View.draw(View.java:14838)
                at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
                at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
                at android.view.View.updateDisplayListIfDirty(View.java:14043)
                at android.view.View.getDisplayList(View.java:14071)
                at android.view.View.draw(View.java:14838)
                at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
                at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
                at android.view.View.draw(View.java:15117)
                at android.widget.FrameLayout.draw(FrameLayout.java:592)
                at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2595)
                at android.view.View.updateDisplayListIfDirty(View.java:14048)
                at android.view.View.getDisplayList(View.java:14071)
                at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:266)
                at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:272)
                at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:311)
                at android.view.ViewRootImpl.draw(ViewRootImpl.java:2492)
                at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2337)
                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1968)
                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
                at android.view.Choreographer.doCallbacks(Choreographer.java:580)
                at android.view.Choreographer.doFrame(Choreographer.java:550)
                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
                at android.os.Handler.handleCallback(Handler.java:739)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5221)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
    

    Simply changing the carbon.widget.FrameLayout to a regular Android FrameLayout, with no other changes, fixes the issue.

    My guess is it's something to do with the z-ordering Carbon does, but I'm not sure.

    This isn't catastrophic for my case as using a regular FrameLayout is fine, but it could impede the use of shadows in some other cases.

    bug 
    opened by DSteve595 11
  • Data Binding error after adding carbon

    Data Binding error after adding carbon

    e: [kapt] An exception occurred: android.databinding.tool.util.LoggedErrorException: Found data binding errors.
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.support.v7.widget.CardView. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/shop_pack_detail.xml loc:16:30 - 16:73 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.RelativeLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/sticker_settings_list_item.xml loc:16:26 - 16:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.LinearLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/conv_empty_search_view.xml loc:13:30 - 13:73 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.RelativeLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/sticker_shop_input_v2.xml loc:11:30 - 11:73 loc:23:38 - 23:81 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.LinearLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout-land/search_empty_view.xml loc:10:26 - 10:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.LinearLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/search_empty_view.xml loc:12:30 - 12:73 ****\ data binding error ****
    ****/ data binding error ****msg:Could not resolve handler::onAddNameClick as a listener. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/profile_fragment.xml loc:91:39 - 91:61 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.RelativeLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/sticker_shop_v2.xml loc:10:26 - 10:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:src' with parameter type android.graphics.drawable.Drawable on android.widget.ImageView. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/view_my_points.xml loc:24:23 - 24:127 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.LinearLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/sticker_shop_download_failed.xml loc:11:26 - 11:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.support.constraint.ConstraintLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/shop_pack_detail_v2.xml loc:26:34 - 26:77 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.FrameLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/pack_preview_not_allowed.xml loc:12:26 - 12:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:onClick' with parameter type lambda on android.widget.RelativeLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/mute_by_member_fragment.xml loc:25:27 - 25:71 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.TextView. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/view_campaign.xml loc:42:38 - 42:91 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.RelativeLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/sticker_shop.xml loc:10:26 - 10:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.LinearLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/share_container.xml loc:11:26 - 11:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.FrameLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/sticker_settings.xml loc:16:26 - 16:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.LinearLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/sticker_shop_loading.xml loc:10:26 - 10:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.support.constraint.ConstraintLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/shop_input_layout.xml loc:15:30 - 15:73 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:onClick' with parameter type lambda on android.widget.RelativeLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/mute_by_time_fragment.xml loc:42:27 - 42:75 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.RelativeLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/pack_preview.xml loc:17:30 - 17:73 loc:37:34 - 37:77 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.view.View. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/all_updated_message.xml loc:11:26 - 11:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.view.View. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout-land/all_updated_message.xml loc:10:26 - 10:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:onClick' with parameter type lambda on android.widget.RelativeLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/custom_mute_fragment.xml loc:49:27 - 49:71 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:src' with parameter type android.graphics.drawable.StateListDrawable on com.bsb.hike.core.view.RecyclingImageView. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/sticker_shop_list_item.xml loc:38:27 - 38:113 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.widget.RelativeLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/hikelistactivity.xml loc:9:26 - 9:69 ****\ data binding error ****
    ****/ data binding error ****msg:Cannot find the setter for attribute 'android:background' with parameter type int on android.support.constraint.ConstraintLayout. file:/Users/devrajchouhan/AndroidStudioProjects/MyApplication/android-client/app/src/main/res/layout/hike_navigation_layout.xml loc:26:30 - 26:73 ****\ data binding error ****
    
    opened by devrajhike 10
  • A Carbon app is not inspectable with the Layout Inspector

    A Carbon app is not inspectable with the Layout Inspector

    Steps to reproduce:

    1. Run the sample Carbon application on an API 33 emulator
    2. In Android Studio: Open the Layout Inspector and connect to the app
    3. Select LinearLayout in the component tree of the Layout Inspector

    Exception seen in logcat: tk.zielony.carbonsamples E Inspector layoutinspector.view.inspection crashed java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.res.ColorStateList.getDefaultColor()' on a null object reference at carbon.widget.LinearLayout.getOutlineAmbientShadowColor(LinearLayout.java:788) at android.view.View$InspectionCompanion.readProperties(View$InspectionCompanion.java:768) at android.view.View$InspectionCompanion.readProperties(View$InspectionCompanion.java:18) at com.android.tools.agent.appinspection.proto.property.PropertyCache$Data.readProperties(PropertyCache.kt:44) at com.android.tools.agent.appinspection.proto.ViewExtensionsKt.createPropertyGroupImpl(ViewExtensions.kt:223) at com.android.tools.agent.appinspection.proto.ViewExtensionsKt.createPropertyGroup(ViewExtensions.kt:191) at com.android.tools.agent.appinspection.proto.ViewExtensionsKt.createGetPropertiesResponse(ViewExtensions.kt:181) at com.android.tools.agent.appinspection.ViewLayoutInspector$handleGetProperties$1$1.run(ViewLayoutInspector.kt:788) at com.android.tools.agent.app.inspection.concurrent.HandlerThreadExecutor$SafeHandler.dispatchMessage(HandlerThreadExecutor.java:71) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.os.HandlerThread.run(HandlerThread.java:67)

    This is because carbon.widget.LinearLayout.getOutlineAmbientShadowColor is dereferencing the ambitneShadowColor unconditionally when it is null.

    opened by jlauridsen 0
  • Views with corner didn't show up in some devices

    Views with corner didn't show up in some devices

    Hello, I am using this amazing library in my app but I am facing a problem. in some devices e.g. galaxy Tab A with android version 11 a view with corners on both sides or three sides didn't show up, but a view with corners for all sides show up well. any help, please?

    opened by devabir93 3
  • Check ProGuard rules and update installation guide for 0.16.0.1 and master's head.

    Check ProGuard rules and update installation guide for 0.16.0.1 and master's head.

    Data binding enabling has been removed from wiki: https://github.com/ZieIony/Carbon/wiki/Installation/_compare/91c996c21d10d6a392ececfe7f27f94b50d2f699...533c5ddd5f0f04b11d91228ca8e8ac7f00fbcc6d

    However, related proguard rules are still listed:

    -dontwarn android.databinding.**
    -keep class android.databinding.** { *; }
    

    Is it somehow intended? Or they are redundant? BTW why don't embed consumer proguard rules?

    opened by koral-- 1
Releases(0.11.0)
  • 0.11.0(Nov 30, 2015)

    • updated build config,
    • fixed anchorGravity bug,
    • fixed svg bugs,
    • added Toolbar::getIcon/getIconView methods,
    • fixed visibility animation system,
    • fixed TransitionLayout touches,
    • added swipe to remove to RecyclerView in samples,
    • added Toolbar sample,
    • added EditText selection menu,
    • added tint to VectorDrawable,
    • added rounded corners and shadows to TextView,
    • added Lollipop handles to EditText,
    • updated samples,
    • fixed some preview errors,
    • added 'text' attribute to Toolbar,
    • fixed issue with inline Toolbar title textColor,
    • fixed wrong EditorMenu position,
    • style changes,
    • theme for EditorMenu and Snackbar,
    • updated EditorMenu,
    • updated SeekBar and RangeSeekBar,
    • fixed issue with drawing error messages before first interaction,
    • added icon attr for Toolbar,
    • added matchingView & validate listener for EditText,
    • fixed isValid method in EditText,
    • EditText uses carbon_errorColor,
    • requestDisallowInterceptTouchEvent for seek bars,
    • fixed BadParcelableException,
    • added getSelectedIndex, Spinner listener, SaveState & popup background to Spinner,
    • tablet support,
    • added color swatches,
    • changed EditText's selection handle's alpha on API < 11
    Source code(tar.gz)
    Source code(zip)
  • 0.10.1(Sep 1, 2015)

    • fixed shadows for views with rounded corners
    • default background for FloatingActionButton
    • fixed Android Marshmallow compatibility issue (FloatMath class)
    • added ContextWrapper
    • added VectorDrawable
    • added easy SVG loading using raw resources and ImageView's src attribute
    • added NavigationView
    • changed SVGActionButton and ImageActionButton to FloatingActionButton
    Source code(tar.gz)
    Source code(zip)
Owner
An engineer, a guitarist and a platypus with love for UI/UX
null
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
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
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 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
Modular and customizable Material Design UI components for Android

Material Components for Android Material Components for Android (MDC-Android) help developers execute Material Design. Developed by a core team of eng

Material Components 14.4k Dec 31, 2022
Easy creation and management of toggle buttons on Android from the Material Design spec.

ToggleButtonLayout Easy creation and management of toggle buttons from the Material Design spec. Read more about ToggleButtonLayout in our blog post.

Savvy 229 Jan 9, 2023
A Gmail-like Material Drawer implementation

AdvancedMaterialDrawer A Gmail-like Material Drawer implementation Based on neokree's MaterialDrawer library, but they are not the same. I have made m

Marc Schäfers 200 Oct 27, 2022
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
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
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
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
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
[] 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 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
Android Material Design Components

Android-Material-Design-Components Material design is a comprehensive guide for visual, motion, and interaction design across platforms and devices. G

Velmurugan Murugesan 3 Jun 10, 2022
A gradle plugin that generates Material Design 3 theme for Android projects.

Same as Google's Material Theme Builder, but as a gradle plugin.

Rikka apps 41 Dec 6, 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