Skip to content

SteadfastInnovation/snackbar

 
 

Repository files navigation

Snackbar

Build Status Android Arsenal

Library that implements Snackbars from Google's Material Design documentation. Works on API levels >= 8

Example App

Example App

Example App

Example App

Example App

Installation

You can import the library from source as a module or grab via Gradle:

compile 'com.nispok:snackbar:2.5.1'

Usage


Using the Snackbar class is easy, this is how you would display it on an Activity:
```java Snackbar.with(getApplicationContext()) // context .text("Single-line snackbar") // text to display .show(this); // activity where it is displayed ``` If you want an action button to be displayed, just assign a label and an ActionClickListener:
```java Snackbar.with(getApplicationContext()) // context .text("Item deleted") // text to display .actionLabel("Undo") // action button label .actionListener(new ActionClickListener() { @Override public void onActionClicked() { Log.d(TAG, "Undoing something"); } }) // action button's ActionClickListener .show(this); // activity where it is displayed ``` If you need to know when the Snackbar is shown or dismissed, assign a EventListener to it. This is useful if you need to move other objects while the Snackbar is displayed. For instance, you can move a Floating Action Button up while the Snackbar is on screen:
```java Snackbar.with(getApplicationContext()) // context .text("This will do something when dismissed") // text to display .eventListener(new EventListener() { @Override public void onShow(Snackbar snackbar) { myFloatingActionButton.moveUp(snackbar.getHeight()); } @Override public void onShown(Snackbar snackbar) { Log.i(TAG, String.format("Snackbar shown. Width: %d Height: %d Offset: %d", snackbar.getWidth(), snackbar.getHeight(), snackbar.getOffset())); } @Override public void onDismiss(Snackbar snackbar) { myFloatingActionButton.moveDown(snackbar.getHeight()); } @Override public void onDismissed(Snackbar snackbar) { Log.i(TAG, String.format("Snackbar dismissed. Width: %d Height: %d Offset: %d", snackbar.getWidth(), snackbar.getHeight(), snackbar.getOffset())); } }) // Snackbar's EventListener .show(this); // activity where it is displayed ``` There are two Snackbar types: single-line (default) and multi-line (2 lines max). You can also set the duration of the Snackbar similar to a Toast. Animation disabling is also possible.
```java Snackbar.with(getApplicationContext()) // context .type(Snackbar.SnackbarType.MULTI_LINE) // Set is as a multi-line snackbar .text("This is a multi-line snackbar. Keep in mind that snackbars are " + "meant for VERY short messages") // text to be displayed .duration(Snackbar.SnackbarDuration.LENGTH_SHORT) // make it shorter .animation(false) // don't animate it .show(this); // where it is displayed ``` You can also change the Snackbar's colors.
```java Snackbar.with(getApplicationContext()) // context .text("Different colors this time") // text to be displayed .textColor(Color.GREEN) // change the text color .color(Color.BLUE) // change the background color .actionLabel("Action") // action button label .actionColor(Color.RED) // action button label color .actionListener(new ActionClickListener() { @Override public void onActionClicked() { Log.d(TAG, "Doing something"); } }) // action button's ActionClickListener .show(this); // activity where it is displayed ``` Finally, you can attach the Snackbar to a AbsListView (ListView, GridView) or a RecyclerView.
```java Snackbar.with(getApplicationContext()) // context .type(Snackbar.SnackbarType.MULTI_LINE) // Set is as a multi-line snackbar .text(R.string.message) // text to be displayed .duration(Snackbar.SnackbarDuration.LENGTH_LONG) // make it shorter .animation(false) // don't animate it .attachToAbsListView(listView) // Attach to ListView - attachToRecyclerView() is for RecyclerViews .show(this); // where it is displayed ``` It uses [Roman Nurik's SwipeToDismiss sample code](https://github.com/romannurik/android-swipetodismiss) to implement the swipe-to-dismiss functionality. This is enabled by default. You can disable this if you don't want this functionality:
**NOTE:** This has no effect on apps running on APIs < 11; swiping will always be disabled
```java Snackbar.with(SnackbarSampleActivity.this) // context .text("Can't swipe this") // text to be displayed .swipeToDismiss(false) // disable swipe-to-dismiss functionality .show(this); // activity where it is displayed ```

Who's using Snackbar?

If you are using this library and would like to be mentioned here, open a PR or tell us via email.

Examples

There's a sample app included in the project. SnackbarSampleActivity is where you want to start.

Contributing

If you would like to add features or report any bugs, open a PR or refer to the issues section.

Contributors

License

MIT

ChangeLog

Go to the releases section for a brief description of each release.

About

Snackbar Android Library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%