Jetpack Compose Glimmer 中的切換按鈕

適用的 XR 裝置
這份指南可協助您為這類 XR 裝置打造體驗。
顯示眼鏡

在 Jetpack Compose Glimmer 中,ToggleButton 是互動式元件,會根據勾選狀態改變外觀。切換按鈕經過最佳化,可搭配顯示眼鏡使用,提供清晰的形狀和顏色視覺轉換效果。這些轉場效果會指出動作或設定何時處於啟用狀態。

使用切換按鈕顯示可開啟或關閉的動作。與僅含圖示的切換按鈕不同,切換按鈕主要顯示文字內容,但支援選用圖示插槽,提供額外背景資訊。

如為其他用途,您也可以使用標準按鈕圖示按鈕

圖 1. 以下是 Jetpack Compose Glimmer 中的切換按鈕範例,用於 UI 版面配置中的播放和暫停動作。

圖解

切換鈕包含可在不同狀態之間變形的容器,以及附有選用圖示的標籤。

Part 說明

容器

在圓形 (未勾選) 和圓角矩形 (已勾選) 之間建立動畫效果。

標籤

通常是 Text 可組合項。

圖示 (選用)

開頭或結尾的空位,可能因州別而異。

大小

標準按鈕類似,切換按鈕支援兩種大小變化:

大小 高度下限 預設使用政策

48.dp

預設互動大小。

72.dp

主要或高強調切換鈕。

切換按鈕預設值

根據預設,切換按鈕會使用 ToggleButtonDefaults.animateShape。這會在下列狀態之間建立平滑的轉場效果:

ToggleButtonColors 類別會管理下列狀態的色彩解析度:

動畫

切換按鈕的動畫預設值如下:

  • animateShape:提供 Shape,可使用彈簧效果規格 (stiffness = 600f) 插補邊角大小。
  • colors:工廠函式,可自訂兩種狀態的背景和內容顏色。
  • CheckedShape:用於勾選狀態的靜態 RoundedCornerShape(20.dp)
  • contentPadding:沿用自 ButtonDefaults.contentPadding

範例:切換按鈕

下列程式碼會建立基本切換按鈕:

@Composable
fun ToggleButtonSample() {
    var checked by remember { mutableStateOf(false) }
    val text = if (checked) "Toggle on" else "Toggle off"
    ToggleButton(checked = checked, onCheckedChange = { checked = it }) { Text(text) }
}

範例:含有前置圖示的切換按鈕

下列程式碼會建立含有前置圖示的切換按鈕:

@Composable
fun ToggleButtonWithLeadingIconSample() {
    var checked by remember { mutableStateOf(false) }
    val text = if (checked) "Toggle on" else "Toggle off"
    ToggleButton(
        checked = checked,
        leadingIcon = {
            Icon(if (checked) FavoriteIcon else OutlinedFavoriteIcon, "Localized description")
        },
        onCheckedChange = { checked = it },
    ) {
        Text(text)
    }
}