晶片

Chip 元件是精簡的互動式 UI 元素,代表聯絡人或標記等複雜實體,通常會顯示圖示和標籤。可勾選、關閉或點選。

以下是四種方塊類型和可能的使用情境:

  • 協助:在使用者執行工作時提供指引。通常會顯示為暫時性 UI 元素,回應使用者輸入內容。
  • 篩選器:可讓使用者從一組選項中篩選內容。可以選取或取消選取,選取時可能會顯示勾號圖示。
  • 輸入:代表使用者提供的資訊,例如選單中的選項。其中可包含圖示和文字,並提供「X」圖示,方便使用者移除。
  • 建議:根據使用者最近的活動或輸入內容,提供建議。通常會顯示在輸入欄位下方,提示使用者採取行動。
四個方塊元件的範例,並醒目顯示其獨特特徵。
圖 1. 四個方塊元件。

API 介面

有四個可組合函式對應四種方塊。以下各節將詳細說明這些可組合項及其差異。不過,兩者共用下列參數:

  • label:方塊上顯示的字串。
  • icon:顯示在方塊開頭的圖示。部分特定可組合項具有獨立的 leadingIcon 和 trailingIcon 參數。
  • onClick:使用者按下方塊時,方塊呼叫的 lambda。

輔助方塊

AssistChip 可組合項提供簡單的方法,可建立輔助方塊,引導使用者朝特定方向操作。其中一項特色是 leadingIcon 參數,可讓您在方塊左側顯示圖示。以下示範如何實作:

@Composable
fun AssistChipExample() {
    AssistChip(
        onClick = { Log.d("Assist chip", "hello world") },
        label = { Text("Assist chip") },
        leadingIcon = {
            Icon(
                painter = rememberVectorPainter(AppIcons.Settings),
                contentDescription = "Localized description",
                Modifier.size(AssistChipDefaults.IconSize)
            )
        }
    )
}

實作方式如下所示。

簡單的輔助方塊,顯示前置圖示和文字標籤。
圖 2. Assist 晶片。

篩選器方塊

FilterChip 可組合項需要您追蹤是否已選取方塊。以下範例說明如何只在使用者選取方塊時,顯示前置勾號圖示:

@Composable
fun FilterChipExample() {
    var selected by remember { mutableStateOf(false) }

    FilterChip(
        onClick = { selected = !selected },
        label = {
            Text("Filter chip")
        },
        selected = selected,
        leadingIcon = if (selected) {
            {
                Icon(
                    painter = rememberVectorPainter(AppIcons.Done),
                    contentDescription = "Done icon",
                    modifier = Modifier.size(FilterChipDefaults.IconSize)
                )
            }
        } else {
            null
        },
    )
}

未選取時,這項實作會顯示如下:

未選取的篩選器方塊,沒有勾號,背景為純色。
圖 3. 未選取的篩選器方塊。

選取後則會顯示如下:

已選取的篩選器方塊,內含勾號和彩色背景。
圖 4. 已選取篩選器方塊。

輸入方塊

您可以使用 InputChip 可組合函式,建立因使用者互動而產生的方塊。舉例來說,在電子郵件用戶端中,當使用者撰寫電子郵件時,輸入方塊方塊可能代表使用者新增至「收件者:」欄位的聯絡人。

以下實作範例示範已處於選取狀態的輸入方塊。使用者按下方塊後,方塊就會關閉。

@Composable
fun InputChipExample(
    text: String,
    onDismiss: () -> Unit,
) {
    var enabled by remember { mutableStateOf(true) }
    if (!enabled) return

    InputChip(
        onClick = {
            onDismiss()
            enabled = !enabled
        },
        label = { Text(text) },
        selected = enabled,
        avatar = {
            Icon(
                painter = rememberVectorPainter(AppIcons.Person),
                contentDescription = "Localized description",
                Modifier.size(InputChipDefaults.AvatarSize)
            )
        },
        trailingIcon = {
            Icon(
                painter = rememberVectorPainter(AppIcons.Close),
                contentDescription = "Localized description",
                Modifier.size(InputChipDefaults.AvatarSize)
            )
        },
    )
}

實作方式如下所示。

含有顯示圖片和結尾圖示的輸入方塊。
圖 5. 輸入方塊。

建議方塊

SuggestionChip 可組合項是本頁列出的可組合項中最基本的,無論是 API 定義還是常見用途。建議方塊會顯示動態生成的提示。舉例來說,在 AI 對話應用程式中,您可以使用建議方塊,針對最新訊息提供可能的回覆。

請考慮以下 SuggestionChip 實作方式:

@Composable
fun SuggestionChipExample() {
    SuggestionChip(
        onClick = { Log.d("Suggestion chip", "hello world") },
        label = { Text("Suggestion chip") }
    )
}

實作方式如下:

簡單的建議方塊。
圖 6. 建議方塊。

浮動方塊

本文件中的所有範例都使用外觀平坦的基本可組合項。如要讓方塊看起來有浮凸效果,請使用下列其中一個可組合項:

其他資源