How to Implement SnackBar in Android.
Android 5.0 introduced the material design bring the all new design, patterns, widgets and much more. If you not familiar with material design start here. Here I will talk about SnackBar introduced in Android Material Design. Snack bar is similar android Toast.
Before you can use Snack bar in your Application you need to add following support design dependency
compile 'com.android.support:design:23.1.1'
Snackbar can also contain Button, which makes it different from Toast.
Snackbar can be shown as follows consisting a message like Toast.
Snackbar.make(view, "CoderzPassion Snackbar", Snackbar.LENGTH_LONG) .setAction("Action", null).show();
SnackBar with Button
snackbarwithbutton=Snackbar.make(findViewById(android.R.id.content), "Snackbar with Button", Snackbar.LENGTH_LONG) .setAction("Dismiss", customSnackbarClick) .setActionTextColor(Color.RED); snackbarwithbutton.show();
Now Final Code
Layout for MainActivity.java
<android.support.design.widget.CoordinatorLayout android:id="@+id/coordinatorLayout" 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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/snackbarbutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Snackbar with Button" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:layout_marginRight="20dp" android:src="@drawable/ic_done" app:fabSize="normal" app:layout_anchor="@id/coordinatorLayout" app:layout_anchorGravity="bottom|right|end"/> </android.support.design.widget.CoordinatorLayout>
Code for MainActivity.java
package com.coderzpassion.snackbarsample; import android.graphics.Color; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { Button snackbarbutton; View.OnClickListener customSnackbarClick; Snackbar snackbarwithbutton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); snackbarbutton=(Button)findViewById(R.id.snackbarbutton); snackbarbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { snackbarwithbutton=Snackbar.make(findViewById(android.R.id.content), "Snackbar with Button", Snackbar.LENGTH_LONG) .setAction("Dismiss", customSnackbarClick) .setActionTextColor(Color.RED); snackbarwithbutton.show(); } }); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { final Snackbar snackBar= Snackbar.make(view, "CoderzPassion Snackbar", Snackbar.LENGTH_LONG) .setAction("Action", null); snackBar.show(); } }); customSnackbarClick=new View.OnClickListener() { @Override public void onClick(View v) { snackbarwithbutton.dismiss(); } }; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Output