Açma/kapatma düğmesi ekle

"Oluştur" yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da bileşenleri nasıl ekleyeceğinizi öğrenin.
Geç → 'nı inceleyin.

View tabanlı bir düzen kullanıyorsanız aşağıdakileri yapmak için üç ana seçenek vardır: nasıl uygulayacağınızı öğreneceksiniz. Şunu kullanmanızı öneririz: SwitchMaterial bileşeni Materyal Bileşenler kitaplığı:

<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">

    <com.google.android.material.switchmaterial.SwitchMaterial
        android:id="@+id/material_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/material_switch"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Eski uygulamalar eski uygulamaları kullanmaya devam edebilir SwitchCompat AppCompat bileşenini aşağıdaki örnekte gösterildiği gibi ekleyin:

<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">

    <androidx.appcompat.widget.SwitchCompat
        android:id="@+id/switchcompat"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/switchcompat"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Aşağıdaki örnekte şunlar gösterilmektedir: AppCompatToggleButton kullanıcı arayüzü önemli ölçüde farklı olan başka bir eski bileşendir:

<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">

    <TextView
        android:id="@+id/toggle_button_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="@id/toggle"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintBaseline_toBaselineOf="@id/toggle"
        android:text="@string/toggle_button" />

    <androidx.appcompat.widget.AppCompatToggleButton
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/toggle_button_label"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

Bu üç bileşen aynı davranışı sağlar ancak farklı görünür. İlgili içeriği oluşturmak için kullanılan SwitchMaterial ve SwitchCompat arasındaki farklar çok küçüktür, ancak AppCompatToggleButton önemli ölçüde farklıdır:

SwitchMaterial, SwitchCompat ve AppCompatToggleButton
Denetimler

Şekil 1. Üç açma/kapatma düğmesi türü.

Durum değişikliklerini işleme

SwitchMaterial, SwitchCompat ve AppCompatToggleButton alt sınıflardır CompoundButton. Bu, kontrol edilmiş durum değişikliklerinin ele alınması için ortak bir mekanizma sağlar. Sizin tarafınızdan örneğinin CompoundButton.OnCheckedChangeListener ve aşağıdaki örnekte gösterildiği gibi düğmeye ekleyin:

Kotlin

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val binding: SwitchLayoutBinding = SwitchLayoutBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.materialSwitch.setOnCheckedChangeListener { _, isChecked ->
            if (isChecked) {
                // The switch is checked.
            } else {
                // The switch isn't checked.
            }
        }
    }
}

Java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SwitchLayoutBinding binding = SwitchLayoutBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        binding.materialSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
            if (isChecked) {
                // The switch is checked.
            } else {
                // The switch isn't checked.
            }
        });
    }
}

CompoundButton.OnCheckedChangeListener, tek soyut bir yöntem arayüzüdür (veya SAM arayüzü) içerir, böylece lambda olarak uygulayabilirsiniz. Lambda adı kontrol edilen durum her değiştiğinde ve isChecked boole değeri lambda'ya geçirilen yeni işaretli durumu belirtir.