使用工具提示,為按鈕或其他 UI 元素新增背景資訊。有兩種工具提示:
- 一般工具提示:說明圖示按鈕的元素或動作。
- 豐富的工具提示:提供更多詳細資訊,例如說明功能的價值。也可以加入選用的標題、連結和按鈕。

API 介面
您可以使用 TooltipBox
可組合項,在應用程式中實作工具提示。您可以使用下列主要參數控制 TooltipBox
的外觀:
positionProvider
:將工具提示置於錨點內容附近。您通常會使用TooltipDefaults
中的預設位置供應器,如果需要自訂定位邏輯,也可以自行提供。tooltip
:包含工具提示內容的可組合函式。您通常會使用PlainTooltip
或RichTooltip
可組合函式。- 使用
PlainTooltip
說明圖示按鈕的元素或動作。 - 使用
RichTooltip
提供更多詳細資料,例如說明功能的價值。豐富的工具提示可包含選用的標題、連結和按鈕。
- 使用
state
:狀態容器,包含此工具提示的 UI 邏輯和元素狀態。content
:浮動工具提示錨定的可組合內容。
顯示純文字工具提示
使用一般工具提示簡要說明 UI 元素。這個程式碼片段會在圖示按鈕上方顯示標示為「Add to favorites」的一般工具提示:
@Composable fun PlainTooltipExample( modifier: Modifier = Modifier, plainTooltipText: String = "Add to favorites" ) { TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(), tooltip = { PlainTooltip { Text(plainTooltipText) } }, state = rememberTooltipState() ) { IconButton(onClick = { /* Do something... */ }) { Icon( imageVector = Icons.Filled.Favorite, contentDescription = "Add to favorites" ) } } }
程式碼的重點
TooltipBox
會產生簡單的工具提示,其中包含「Add to favorites」文字。TooltipDefaults.rememberPlainTooltipPositionProvider()
會為純文字工具提示提供預設位置。tooltip
是 lambda 函式,可使用PlainTooltip
可組合項定義工具提示內容。Text(plainTooltipText)
會在工具提示中顯示文字。tooltipState
會控制工具提示的狀態。
IconButton
會建立含有圖示的可點按按鈕。Icon(...)
會在按鈕中顯示心形圖示。- 當使用者與
IconButton
互動時,系統會顯示工具提示,並顯示「Add to favorites」(加入我的收藏) 文字。視裝置而定,使用者可以透過下列方式觸發工具提示: - 將游標懸停在圖示上
- 在行動裝置上長按圖示
結果
這個範例會在圖示上方產生一般工具提示:

顯示豐富的工具提示
使用豐富的工具提示,提供 UI 元素的其他背景資訊。這個範例會建立多行豐富工具提示,其標題會錨定至 Icon
:
@Composable fun RichTooltipExample( modifier: Modifier = Modifier, richTooltipSubheadText: String = "Rich Tooltip", richTooltipText: String = "Rich tooltips support multiple lines of informational text." ) { TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(), tooltip = { RichTooltip( title = { Text(richTooltipSubheadText) } ) { Text(richTooltipText) } }, state = rememberTooltipState() ) { IconButton(onClick = { /* Icon button's click event */ }) { Icon( imageVector = Icons.Filled.Info, contentDescription = "Show more information" ) } } }
程式碼的重點
TooltipBox
會處理使用者互動的事件監聽器,並據此更新TooltipState
。當TooltipState
指出應顯示工具提示時,系統會執行工具提示 lambda,並顯示RichTooltip
。TooltipBox
可做為內容和工具提示的錨點和容器。- 在本例中,內容是
IconButton
元件,可提供可點選的動作行為。當您在TooltipBox
內容中長按 (在觸控裝置上) 或游標懸停 (如同滑鼠游標) 時,系統會顯示工具提示,提供更多資訊。
- 在本例中,內容是
RichTooltip
可組合項會定義工具提示的內容,包括標題和內文。TooltipDefaults.rememberRichTooltipPositionProvider()
會提供豐富工具提示的定位資訊。
結果
這個範例會產生豐富的工具提示,其中標題會附加至資訊圖示:

自訂豐富的工具提示
這個程式碼片段會顯示豐富的工具提示,其中包含標題、自訂動作,以及在相機圖示按鈕上方顯示的自訂分頁符號 (箭頭):
@Composable fun AdvancedRichTooltipExample( modifier: Modifier = Modifier, richTooltipSubheadText: String = "Custom Rich Tooltip", richTooltipText: String = "Rich tooltips support multiple lines of informational text.", richTooltipActionText: String = "Dismiss" ) { val tooltipState = rememberTooltipState() val coroutineScope = rememberCoroutineScope() TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(), tooltip = { RichTooltip( title = { Text(richTooltipSubheadText) }, action = { Row { TextButton(onClick = { coroutineScope.launch { tooltipState.dismiss() } }) { Text(richTooltipActionText) } } }, caretSize = DpSize(32.dp, 16.dp) ) { Text(richTooltipText) } }, state = tooltipState ) { IconButton(onClick = { coroutineScope.launch { tooltipState.show() } }) { Icon( imageVector = Icons.Filled.Camera, contentDescription = "Open camera" ) } } }
程式碼的重點
RichToolTip
會顯示含有標題和關閉動作的工具提示。- 啟用時,無論是長按或以滑鼠游標懸停在
ToolTipBox
內容上,工具提示都會顯示約一秒鐘。您可以輕觸螢幕上的其他位置,或使用關閉動作按鈕來關閉這個工具提示。 - 執行關閉動作時,系統會啟動協同程式來呼叫
tooltipState.dismiss
。這樣可確保在顯示工具提示時,不會阻斷動作執行。 onClick = coroutineScope.launch { tooltipState.show() } }
會啟動協同程式,以便使用tooltipState.show
手動顯示工具提示。action
參數可讓您將互動元素新增至工具提示 (例如按鈕)。caretSize
參數可修改工具提示箭頭的大小。
結果
這個範例會產生以下內容:

其他資源
- Material Design:工具提示