In Android, the ToggleButton
is just like a switch containing two states either ON or OFF
which are represented using boolean values true and false respectively. ToggleButton unlike switch does not have a slider interface i.e. we cannot slide to change the states. It is just like a button. In this article, we will be
discussing how to create a ToggleButton in Kotlin.
Android ToggleButton XML Attributes
Note: ToggleButton inherits the button class of android
. Therefore, all the attributes of the button are also applicable here.
Following are some of the additional important attributes available along ToggleButton
Attribute |
Description |
android:id |
The ID assigned to the toggle button |
android:textOff |
The text is shown on the button when it is not checked |
android:textOn |
The text is shown on the button when it is checked |
android:disabledAlpha |
The alpha (opacity) to apply to the when disabled. |
Create a new project in Android Studio
To create a new project in Android Studio follow these steps:
- Click on File, then New, and then New Project, and give a name whatever you like.
- Choose “Empty Activity” for the project template.
- Then, select Kotlin language Support and click the next button.
- Select minimum SDK, whatever you need
Modify activity_main.xml
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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ToggleButton
android:id="@+id/toggleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Accessing the Toggle Button
The toggle button in the layout can be accessed using the
findViewById()
function.
val toggle: ToggleButton = findViewById(R.id.toggleButton)
After accessing set a listener to perform actions based on the toggle state using
setOnCheckedChangeListener()
method.
toggle.setOnCheckedChangeListener { _, isChecked -> **Perform Any Action Here**}
Modify MainActivity.kt file as mentioned below:
MainActivity.kt
package com.example.togglebuttonsample
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import android.widget.ToggleButton
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toggle: ToggleButton = findViewById(R.id.toggleButton)
toggle.setOnCheckedChangeListener { _, isChecked ->
Toast.makeText(this, if(isChecked) "Geek Mode ON" else "Geek Mode OFF", Toast.LENGTH_SHORT).show()
}
}
}
Run on Emulator