ToggleButton подобно элементу CheckBox может пребывать в двух состояниях: отмеченном и неотмеченном, причем для каждого состояния мы можем отдельно установить свой текст. Например, определим следующий элемент ToggleButton:
<?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:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp"> <ToggleButton android:id="@+id/toggle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="Включено" android:textOff="Выключено" android:onClick="onToggleClicked" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
Атрибуты android:textOn
и android:textOff
задают текст кнопки в отмеченном и неотмеченном состоянии соответственно. И также, как и для
других кнопок, мы можем обработать нажатие на элемент с помощью события onClick
. В этом случае определим в классе Activity обработчик события:
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; import android.widget.ToggleButton; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onToggleClicked(View view) { // включена ли кнопка boolean on = ((ToggleButton) view).isChecked(); if (on) { // действия если включена Toast.makeText(this, "Свет включен", Toast.LENGTH_LONG).show(); } else { // действия, если выключена Toast.makeText(this, "Свет выключен!", Toast.LENGTH_LONG).show(); } } }
Создание элемента ToggleButton в коде java:
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.os.Bundle; import android.view.View; import android.widget.Toast; import android.widget.ToggleButton; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); ConstraintLayout layout = new ConstraintLayout(this); ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams (ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT); ToggleButton toggleButton = new ToggleButton(this); toggleButton.setTextOff("Выключено"); toggleButton.setTextOn("Включено"); toggleButton.setText("Выключено"); toggleButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { boolean on = ((ToggleButton) view).isChecked(); if (on) { Toast.makeText(getApplicationContext(), "Свет включен", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "Свет выключен!", Toast.LENGTH_LONG).show(); } } }); layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID; layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID; layout.addView(toggleButton); setContentView(layout); } }