Saturday, February 24, 2018

android kotlin - Snackbar example

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>
More android examples