添加切换按钮

📂 best365从哪能进去 ⏳ 2026-07-14 09:00:47 👽 admin 👁️ 632 💾 538
添加切换按钮

尝试使用 Compose 方式

Jetpack Compose 是推荐用于 Android 的界面工具包。了解如何在 Compose 中添加组件。

切换 →

如果您使用的是基于 View 的布局,则有三种主要选择来实现切换开关。我们建议使用

SwitchMaterial组件

来自 Material

Components 库:

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:padding="16dp">

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

旧版应用可能仍在使用较旧的

SwitchCompat AppCompat

组件,如以下示例所示:

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:padding="16dp">

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

以下示例展示了

AppCompatToggleButton,这是另一个旧版组件,其界面明显不同:

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:padding="16dp">

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

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

这三个组件提供相同的行为,但外观不同。SwitchMaterial 和 SwitchCompat 之间的差异很小,但

AppCompatToggleButton 明显不同:

图 1. 三种切换开关按钮类型。

处理状态更改

SwitchMaterial、SwitchCompat 和 AppCompatToggleButton 都是 CompoundButton 的子类,这为它们提供了一种用于处理选中状态更改的通用机制。您可以实现

的实例并将其添加到按钮,如以下示例所示:CompoundButton.OnCheckedChangeListener

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 是一个单一抽象方法接口(或 SAM 接口 ),因此您可以将其实现为

lambda。每当选中状态发生变化时,系统都会调用 lambda,并且传递给 lambda 的 isChecked 布尔值表示新的选中状态。

相关数据包

2014世界杯强队 2014年世界杯各国家队阵容

2014世界杯强队 2014年世界杯各国家队阵容

📅 09-12 🔗 best365从哪能进去
【每日一绘★027】学达芬奇画鸡蛋(教程:结构与透视)
上班撸猫撸狗,带宠物上班的幸福体验与科学依据
盘点十款老的金庸武侠单机游戏 最爱PS1版射雕
← 敦煌莫高窟壁画中的四大瑞兽 孩童游戏有哪些好玩 十大必玩孩童游戏推荐 →