Giter Club home page Giter Club logo

custom-snackbar's Introduction

Android Custom Snackbar

Android custom snackbar is derived from the Android default snackbar control

  • Use it in Activity or Fragment
  • Change the background and text color easily
  • Custom view applies in the snackbar control
  • Typeface applies easily to text
  • Corner radius and Padding apply
  • Androidx supported
  • More to find out yourself

Installation

Gradle:

repositories {
    maven { url 'https://jitpack.io' }
}

dependencies {
    implementation 'com.github.kishandonga:custom-snackbar:1.3'
}

Screenshots

Custom snackbar same as Default Control of the android Snackbar


Make the background semi-transparent and add a corner radius for a better look


Custom view according to your requirements


Apply gradient in the snackbar background


Examples

Refer to This Sample Code

For, more information refer this sample code here

With Coordinator Layout

Passing the activity context and coordinator layout as view in the custom snackbar constructor as shown below

CustomSnackbar(this, **<root_view>**).show {...}

Without Coordinator Layout

Only pass the activity context in the custom snackbar constructor as shown below

CustomSnackbar(this).show {...}

Kotlin

CustomSnackbar(this, root).show {
    textTypeface(BOLD | BOLD_ITALIC | ITALIC | NORMAL | CUSTOM)
    actionTypeface(BOLD | BOLD_ITALIC | ITALIC | NORMAL | CUSTOM)
    textColor(...)
    backgroundColor(...)
    border(..., ...)
    cornerRadius(...)
    padding(...)
    duration(LENGTH_INDEFINITE | LENGTH_LONG | LENGTH_SHORT)
    actionTextColor(...)
    message(...)
    withAction(android.R.string.ok) {
        it.dismiss()
    }
}

Java

CustomSnackbar sb = new CustomSnackbar(MainActivity.this);
sb.message("Testing Message...");
sb.padding(15);
sb.cornerRadius(15);
sb.duration(Snackbar.LENGTH_LONG);
sb.withAction(android.R.string.ok, new Function1<Snackbar, Unit>() {
    @Override
    public Unit invoke(Snackbar snackbar) {
        snackbar.dismiss();
        return null;
    }
});
sb.show();

Custom View

Kotlin

CustomSnackbar(this).show {
    customView(R.layout.snack_layout)
    padding(...)
    duration(LENGTH_INDEFINITE | LENGTH_LONG | LENGTH_SHORT)
    withCustomView {
        it.findViewById<View>(R.id.btnUndo).setOnClickListener {
            dismiss()
        }
    }
}

Java

final CustomSnackbar sb = new CustomSnackbar(MainActivity.this);
sb.customView(R.layout.snack_layout);
sb.duration(Snackbar.LENGTH_INDEFINITE);
sb.withCustomView(new Function1<View, Unit>() {
    @Override
    public Unit invoke(View view) {
        view.findViewById(R.id.btnUndo).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                sb.dismiss();
            }
        });
        return null;
    }
});
sb.show();

// OR Use Like This Way

// View v = sb.getView();
// if(v != null){
//    v.findViewById(R.id.btnUndo).setOnClickListener(new View.OnClickListener() {
//        @Override
//        public void onClick(View view) {
//            sb.dismiss();
//        }
//    });
// }

With Drawable

Kotlin

CustomSnackbar(this).show {
    drawableRes(R.drawable.ic_gradient)
    ...
}

Java

CustomSnackbar sb = new CustomSnackbar(MainActivity.this);
sb.drawableRes(R.drawable.ic_gradient);
sb.message("Test Message...");
sb.padding(15);
sb.duration(Snackbar.LENGTH_LONG);
sb.show();

API Documents

Function Parameter Description
actionTextColor Integer Color Value Change the action button text color, the default value is colorAccent
actionTextColorRes Color Resource Refer actionTextColor function description
textColor Integer Color Value Change the message text color, the default value is a white color
textColorRes Color Resource Refer textColor function description
backgroundColor Integer Color Value Change the background color of the snackbar, The default value is the same as snackbar background also you can't make it transparent
backgroundColorRes Color Resource Refer backgroundColor function description
cornerRadius Float Value Apply corner radius on all the sides (Left, Top, Right, Bottom), default value is 0
cornerRadiusRes Dimension Resource Refer cornerRadius function description
border Width as Integer and Integer Color Value Apply border width and color around the snackbar, the default value of the width is 0 and the color is transparent
borderRes Width as Dimension Resource and Color Resource Refer border function description
customView View or Layout Resource Set your customized view as snackbar, the default value is null also when you apply custom view then other API are not in use as shown in the example code
message String Set the message as string and the default value is an empty string
messageRes String Resource Refer message function description
duration Integer Value set the time duration default value is Snackbar.LENGTH_SHORT
padding Integer Value Apply the padding at the (Left, Right, Bottom) side, the default value is 0
paddingRes Dimension Resource Refer padding function description
textTypeface Typeface Change the message text Typeface, default value is Typeface.NORMAL
actionTypeface Typeface Change the action button text Typeface, default value is Typeface.NORMAL
withAction String Resource or String and Snackbar as anonymous function pass the first argument as action button name and the default value is an empty string, second argument as lambda function with snackbar reference
withCustomView View as anonymous function when custom view initialized then passing here for your further use
drawable GradientDrawable Set the gradient drawable as snackbar background, the default value is null also when you apply drawable then background color, cornerRadius, border width, and color API are not in used as shown in the example code
drawableRes Drawable Resource Refer drawable function description
show Void Or Koltin DSL Show the snackbar view
dismiss Void Or Unit Dismiss the snackbar view
getView Void and return View? Same as withCustomView but it will return a null value too

About me

I'm Kishan Donga and you can connect with me via the below links, I am a developer and love to create innovations.

LinkedIn @ikd96 Email [email protected] Twitter @ikishan96 Instagram @ikishan96

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.