MainActivity.kt
package com.cfsuman.kotlintutorials
import android.graphics.Color
import android.graphics.Typeface
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import com.google.android.material.snackbar.Snackbar
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Get the widgets reference from XML layout
val rootLayout = findViewById<ConstraintLayout>(R.id.rootLayout)
val buttonSimple = findViewById<Button>(R.id.buttonSimple)
val buttonAction = findViewById<Button>(R.id.buttonAction)
val buttonStyle = findViewById<Button>(R.id.buttonStyle)
// Button click listener
buttonSimple.setOnClickListener{
Snackbar.make(
rootLayout, // Parent view
"Hello Snackbar!", // Message to show
Snackbar.LENGTH_SHORT // How long to display the message.
).show()
}
// Button to show a snack bar with action enabled
buttonAction.setOnClickListener{
// Change the app background color
rootLayout.setBackgroundColor(
Color.parseColor("#A8C3BC")
)
// Show a snack bar for undo option
Snackbar.make(
rootLayout, // Parent view
"We changes app background color.", // Message to show
Snackbar.LENGTH_LONG //
).setAction( // Set an action for snack bar
"Undo" // Action button text
){ // Action button click listener
// Do something when undo action button clicked
rootLayout.setBackgroundColor(
Color.parseColor("#F8F8F8")
)
}.show() // Finally show the snack bar
}
// Customize the snack bar style
buttonStyle.setOnClickListener{
// Initialize a new snack bar instance
val snackbar = Snackbar.make(
rootLayout,
"This is a styled snack bar.",
Snackbar.LENGTH_INDEFINITE
)
// Get the snack bar root view
val snackRootView = snackbar.view
// Get the snack bar text view
val snackTextView = snackRootView
.findViewById<TextView>(
com.google.android.material.R.id.snackbar_text)
// Get the snack bar action view
val snackActionView = snackRootView
.findViewById<Button>(
com.google.android.material.R.id.snackbar_action)
// Change the snack bar root view background color
snackRootView.setBackgroundColor(
Color.parseColor("#A4DDED"))
// Change the snack bar text view text color
snackTextView.setTextColor(
Color.parseColor("#2D383A"))
// Change snack bar text view text style
snackTextView.setTypeface(
Typeface.MONOSPACE,Typeface.BOLD_ITALIC)
// Change the snack bar action button text color
snackActionView.setTextColor(
Color.parseColor("#002147"))
// Set an action for snack bar
snackbar.setAction("Hide Me") {
// Hide the snack bar
snackbar.dismiss()
}
// Finally, display the snack bar
snackbar.show()
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp"
android:background="#F8F8F8">
<Button
android:id="@+id/buttonSimple"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Simple Snackbar"
android:textAllCaps="false"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/buttonAction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Snackbar Action"
android:textAllCaps="false"
app:layout_constraintStart_toStartOf="@+id/buttonSimple"
app:layout_constraintTop_toBottomOf="@+id/buttonSimple" />
<Button
android:id="@+id/buttonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Snackbar Style"
android:textAllCaps="false"
app:layout_constraintStart_toStartOf="@+id/buttonAction"
app:layout_constraintTop_toBottomOf="@+id/buttonAction" />
</androidx.constraintlayout.widget.ConstraintLayout>