使用工具提示為按鈕或其他 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( painter = rememberVectorPainter(AppIcons.Favorite), contentDescription = "Add to favorites" ) } } }
程式碼重點
TooltipBox會產生文字為「Add to favorites」的工具提示。TooltipDefaults.rememberPlainTooltipPositionProvider()提供純工具提示的預設位置。tooltip是 lambda 函式,使用PlainTooltip可組合函式定義工具提示的內容。Text(plainTooltipText)會顯示工具提示中的文字。tooltipState控制工具提示的狀態。
IconButton會建立含有圖示的可點擊按鈕。Icon(...)會在按鈕中顯示愛心圖示。- 當使用者與
IconButton互動時,TooltipBox會顯示文字為「加入我的收藏」的工具提示。視裝置而定,使用者可以透過下列方式觸發工具提示: - 將游標懸停在圖示上
- 在行動裝置上長按圖示
結果
這個範例會在圖示上方產生一般工具提示:

顯示豐富的工具提示
使用豐富工具提示,提供 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( painter = rememberVectorPainter(AppIcons.Info), contentDescription = "Show more information" ) } } }
程式碼重點
TooltipBox會處理使用者互動的事件監聽器,並據此更新TooltipState。當TooltipState指出應顯示工具提示時,工具提示 lambda 會執行,且TooltipBox會顯示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) } } }, ) { Text(richTooltipText) } }, state = tooltipState ) { IconButton(onClick = { coroutineScope.launch { tooltipState.show() } }) { Icon( painter = rememberVectorPainter(AppIcons.Camera), contentDescription = "Open camera" ) } } }
程式碼重點
RichTooltip會顯示工具提示,其中包含標題和關閉動作。- 長按或將滑鼠游標懸停在
TooltipBox內容上,即可啟用工具提示,顯示時間約為一秒。輕觸螢幕其他位置或使用關閉動作按鈕,即可關閉這則工具提示。 - 執行關閉動作時,系統會啟動協同程式來呼叫
tooltipState.dismiss。這可驗證顯示工具提示時,動作執行不會遭到封鎖。 onClick = coroutineScope.launch { tooltipState.show() } }會啟動協同程式,使用tooltipState.show手動顯示工具提示。action參數可讓您在工具提示中加入互動元素,例如按鈕。caretSize參數會修改工具提示箭頭的大小。
結果
這個範例會產生下列輸出內容:
其他資源
- Material Design:工具提示