Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Verwenden Sie Kurzinfos, um einer Schaltfläche oder einem anderen UI-Element Kontext hinzuzufügen.
Es gibt zwei Arten von Kurzinfos:
Einfache Kurzinfos: Beschreiben Sie Elemente oder Aktionen von Symbolschaltflächen.
Umfassende Kurzinfos: Sie enthalten mehr Details, z. B. eine Beschreibung des Werts eines Features. Sie können auch einen optionalen Titel, Link und Schaltflächen einfügen.
Abbildung 1: Eine einfache Kurzinfo (1) und eine Rich-Tooltip (2).
API-Oberfläche
Mit der TooltipBox-Composable können Sie Tooltips in Ihrer App implementieren. Die Darstellung von TooltipBox wird über die folgenden Hauptparameter gesteuert:
positionProvider: Positioniert den Tooltip relativ zum Ankerinhalt. Normalerweise verwenden Sie einen Standardanbieter für die Positionierung aus TooltipDefaults. Sie können aber auch einen eigenen Anbieter angeben, wenn Sie eine benutzerdefinierte Logik für die Positionierung benötigen.
tooltip: Die zusammensetzbare Funktion, die den Inhalt der Kurzinfo enthält. Normalerweise verwenden Sie entweder die Composables PlainTooltip oder RichTooltip.
Verwenden Sie PlainTooltip, um Elemente oder Aktionen von Symbolschaltflächen zu beschreiben.
Mit RichTooltip können Sie weitere Details angeben, z. B. den Wert einer Funktion beschreiben. Rich-Kurzinfos können einen optionalen Titel, Link und Schaltflächen enthalten.
state: Der Status-Holder, der die UI-Logik und den Elementstatus für diesen Tooltip enthält.
content: Der zusammensetzbare Inhalt, an dem das Tooltip verankert ist.
Einfache Kurzinfo anzeigen
Verwenden Sie einen einfachen Kurzinfo-Text, um ein UI-Element kurz zu beschreiben. In diesem Code-Snippet wird eine einfache Kurzinfo über einer Symbolschaltfläche mit dem Label „Zu Favoriten hinzufügen“ angezeigt:
@ComposablefunPlainTooltipExample(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")}}}
tooltip ist eine Lambda-Funktion, die den Inhalt des Tooltips mit der zusammensetzbaren Funktion PlainTooltip definiert.
Text(plainTooltipText) zeigt den Text in der Kurzinfo an.
Mit tooltipState wird der Status der Kurzinfo gesteuert.
Mit IconButton wird eine anklickbare Schaltfläche mit einem Symbol erstellt.
Bei Icon(...) wird ein Herzsymbol in der Schaltfläche angezeigt.
Wenn ein Nutzer mit dem IconButton interagiert, wird in TooltipBox der Kurzinfo-Text „Zu Favoriten hinzufügen“ angezeigt. Je nach Gerät können Nutzer den Kurzinfo-Text auf folgende Weise aufrufen:
Mit dem Cursor auf das Symbol zeigen
Langes Drücken des Symbols auf einem Mobilgerät
Ergebnis
In diesem Beispiel wird eine einfache Kurzinfo über einem Symbol angezeigt:
Abbildung 2. Eine einfache Kurzinfo, die angezeigt wird, wenn ein Nutzer den Mauszeiger auf das Herzsymbol bewegt oder es lange drückt.
Rich-Tooltip anzeigen
Verwenden Sie eine Rich-Kurzinfo, um zusätzlichen Kontext zu einem UI-Element bereitzustellen. In diesem Beispiel wird ein mehrzeiliger Rich-Tooltip mit einem Titel erstellt, der an ein Icon-Element angehängt ist:
@ComposablefunRichTooltipExample(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 verarbeitet die Event-Listener für Nutzerinteraktionen und aktualisiert TooltipState entsprechend. Wenn TooltipState angibt, dass die Kurzinfo angezeigt werden soll, wird die Lambda-Funktion für die Kurzinfo ausgeführt und TooltipBox zeigt die RichTooltip an. Das TooltipBox-Element dient als Anker und Container für den Inhalt und die Kurzinfo.
In diesem Fall ist der Inhalt eine IconButton-Komponente, die das Verhalten für Tippaktionen bereitstellt. Wenn Sie auf Touchgeräten lange auf den Inhalt von TooltipBox tippen oder den Mauszeiger darauf bewegen, wird die Kurzinfo mit weiteren Informationen angezeigt.
Mit der zusammensetzbaren Funktion RichTooltip wird der Inhalt des Tooltips definiert, einschließlich des Titels und des Textkörpers.
TooltipDefaults.rememberRichTooltipPositionProvider() enthält Informationen zur Positionierung von Rich-Kurzinfos.
Ergebnis
In diesem Beispiel wird ein umfangreicher Kurzinfo-Text mit einem Titel generiert, der an ein Informationssymbol angehängt ist:
Abbildung 3. Eine ausführliche Kurzinfo mit einem Titel und einem Infosymbol.
Rich-Kurzinfo anpassen
In diesem Code-Snippet wird eine erweiterte Kurzinfo mit einem Titel, benutzerdefinierten Aktionen und einem benutzerdefinierten Caret (Pfeil) angezeigt, die über einer Kamerasymbolschaltfläche eingeblendet wird:
@ComposablefunAdvancedRichTooltipExample(modifier:Modifier=Modifier,richTooltipSubheadText:String="Custom Rich Tooltip",richTooltipText:String="Rich tooltips support multiple lines of informational text.",richTooltipActionText:String="Dismiss"){valtooltipState=rememberTooltipState()valcoroutineScope=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")}}}
Bei einem RichToolTip wird eine Kurzinfo mit einem Titel und einer Schließen-Aktion angezeigt.
Wenn die Kurzinfo durch langes Drücken oder Bewegen des Mauszeigers auf den ToolTipBox-Inhalt aktiviert wird, wird sie etwa eine Sekunde lang angezeigt.
Sie können diesen Infotipp schließen, indem Sie entweder an einer anderen Stelle auf das Display tippen oder die Schaltfläche zum Schließen verwenden.
Wenn die Aktion zum Schließen ausgeführt wird, startet das System eine Coroutine, um tooltipState.dismiss aufzurufen. So wird überprüft, ob die Ausführung der Aktion nicht blockiert wird, während die Kurzinfo angezeigt wird.
onClick = coroutineScope.launch { tooltipState.show() } } startet eine Coroutine, um das Tooltip manuell mit tooltipState.show anzuzeigen.
Mit dem Parameter action können interaktive Elemente wie eine Schaltfläche in eine Kurzinfo eingefügt werden.
Mit dem Parameter caretSize wird die Größe des Tooltip-Pfeils geändert.
Ergebnis
Dieses Beispiel erzeugt Folgendes:
Abbildung 4: Eine benutzerdefinierte Rich-Kurzinfo mit einer Schließen-Schaltfläche, die an ein Kamerasymbol angehängt ist.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-08-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-27 (UTC)."],[],[],null,["Use [tooltips](https://m3.material.io/components/tooltips/overview) to add context to a button or other UI element.\nThere are two types of tooltips:\n\n- **Plain tooltips**: Describe elements or actions of icon buttons.\n- **Rich tooltips**: Provide more detail, such as describing the value of a feature. Can also include an optional title, link, and buttons.\n\n**Figure 1.** A plain tooltip (1) and a rich tooltip (2).\n\nAPI surface\n\nYou can use the [`TooltipBox`](/reference/kotlin/androidx/compose/material3/package-summary#TooltipBox(androidx.compose.ui.window.PopupPositionProvider,kotlin.Function1,androidx.compose.material3.TooltipState,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Boolean,kotlin.Boolean,kotlin.Function0)) composable to implement tooltips in your app.\nYou control [`TooltipBox`](/reference/kotlin/androidx/compose/material3/package-summary#TooltipBox(androidx.compose.ui.window.PopupPositionProvider,kotlin.Function1,androidx.compose.material3.TooltipState,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Boolean,kotlin.Boolean,kotlin.Function0)) appearance with these main parameters:\n\n- `positionProvider`: Places the tooltip relative to the anchor content. You typically use a default position provider from the `TooltipDefaults`, or you can provide your own if you need custom positioning logic.\n- `tooltip`: The composable that contains the tooltip's content. You typically use either the `PlainTooltip` or `RichTooltip` composables.\n - Use `PlainTooltip` to describe elements or actions of icon buttons.\n - Use `RichTooltip` to provide more details, like describing the value of a feature. Rich tooltips can include an optional title, link, and buttons.\n- `state`: The state holder that contains the UI logic and element state for this tooltip.\n- `content`: The composable content that the tooltip is anchored to.\n\nDisplay a plain tooltip\n\nUse a plain tooltip to briefly describe a UI element. This code snippet displays\na plain tooltip on top of an icon button, labeled \"Add to favorites\":\n\n\n```kotlin\n@Composable\nfun PlainTooltipExample(\n modifier: Modifier = Modifier,\n plainTooltipText: String = \"Add to favorites\"\n) {\n TooltipBox(\n modifier = modifier,\n positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(),\n tooltip = {\n PlainTooltip { Text(plainTooltipText) }\n },\n state = rememberTooltipState()\n ) {\n IconButton(onClick = { /* Do something... */ }) {\n Icon(\n imageVector = Icons.Filled.Favorite,\n contentDescription = \"Add to favorites\"\n )\n }\n }\n}\nhttps://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt#L74-L95\n```\n\n\u003cbr /\u003e\n\nKey points about the code\n\n- `TooltipBox` generates a tooltip with the text \"Add to favorites\".\n - [`TooltipDefaults.rememberPlainTooltipPositionProvider()`](/reference/kotlin/androidx/compose/material3/TooltipDefaults?#rememberPlainTooltipPositionProvider(androidx.compose.ui.unit.Dp)) provides default positioning for plain tooltips.\n - `tooltip` is a lambda function that defines the tooltip's content using the [`PlainTooltip`](/reference/kotlin/androidx/compose/material3/TooltipScope#(androidx.compose.material3.TooltipScope).PlainTooltip(androidx.compose.ui.Modifier,androidx.compose.ui.unit.DpSize,androidx.compose.ui.unit.Dp,androidx.compose.ui.graphics.Shape,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,kotlin.Function0)) composable.\n - `Text(plainTooltipText)` displays the text within the tooltip.\n - [`tooltipState`](/reference/kotlin/androidx/compose/material3/TooltipState) controls the state of the tooltip.\n- `IconButton` creates a clickable button with an icon.\n - `Icon(...)` displays a heart icon within the button.\n - When a user interacts with the `IconButton`, `TooltipBox` shows the tooltip with the text \"Add to favorites\". Depending on the device, users can trigger the tooltip in the following ways:\n - Hovering over the icon with a cursor\n - Long-pressing the icon on a mobile device\n\nResult\n\nThis example produces a plain tooltip on top of an icon:\n**Figure 2.**A plain tooltip that appears when a user hovers over or long-presses the heart icon.\n\nDisplay a rich tooltip\n\nUse a rich tooltip to provide additional context about a UI element. This\nexample creates a multi-line rich tooltip with a title that is anchored to an\n`Icon`:\n\n\n```kotlin\n@Composable\nfun RichTooltipExample(\n modifier: Modifier = Modifier,\n richTooltipSubheadText: String = \"Rich Tooltip\",\n richTooltipText: String = \"Rich tooltips support multiple lines of informational text.\"\n) {\n TooltipBox(\n modifier = modifier,\n positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(),\n tooltip = {\n RichTooltip(\n title = { Text(richTooltipSubheadText) }\n ) {\n Text(richTooltipText)\n }\n },\n state = rememberTooltipState()\n ) {\n IconButton(onClick = { /* Icon button's click event */ }) {\n Icon(\n imageVector = Icons.Filled.Info,\n contentDescription = \"Show more information\"\n )\n }\n }\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt#L106-L131\n```\n\n\u003cbr /\u003e\n\nKey points about the code\n\n- `TooltipBox` handles the event listeners for user interactions and updates `TooltipState` accordingly. When `TooltipState` indicates that the tooltip should be shown, the tooltip lambda executes, and `TooltipBox` displays the `RichTooltip`. The `TooltipBox` acts as the anchor and container for both content and the tooltip.\n - In this case, the content is an `IconButton` component, which provides the tappable action behavior. When long-pressed (on touch devices) or hovered over (as with the mouse pointer) anywhere in `TooltipBox`'s content, the tooltip will display to show more information.\n- The `RichTooltip` composable defines the tooltip's content, including the title and body text. [`TooltipDefaults.rememberRichTooltipPositionProvider()`](/reference/kotlin/androidx/compose/material3/TooltipDefaults?#rememberRichTooltipPositionProvider(androidx.compose.ui.unit.Dp)) provides positioning information for rich tooltips.\n\nResult\n\nThis example produces a rich tooltip with a title attached to an information\nicon:\n**Figure 3.**A rich tooltip with a title and an information icon.\n\nCustomize a rich tooltip\n\nThis code snippet displays a rich tooltip with a title, custom actions, and a\ncustom caret (arrow) displayed on top of a camera icon button:\n\n\n```kotlin\n@Composable\nfun AdvancedRichTooltipExample(\n modifier: Modifier = Modifier,\n richTooltipSubheadText: String = \"Custom Rich Tooltip\",\n richTooltipText: String = \"Rich tooltips support multiple lines of informational text.\",\n richTooltipActionText: String = \"Dismiss\"\n) {\n val tooltipState = rememberTooltipState()\n val coroutineScope = rememberCoroutineScope()\n\n TooltipBox(\n modifier = modifier,\n positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(),\n tooltip = {\n RichTooltip(\n title = { Text(richTooltipSubheadText) },\n action = {\n Row {\n TextButton(onClick = {\n coroutineScope.launch {\n tooltipState.dismiss()\n }\n }) {\n Text(richTooltipActionText)\n }\n }\n },\n caretSize = DpSize(32.dp, 16.dp)\n ) {\n Text(richTooltipText)\n }\n },\n state = tooltipState\n ) {\n IconButton(onClick = {\n coroutineScope.launch {\n tooltipState.show()\n }\n }) {\n Icon(\n imageVector = Icons.Filled.Camera,\n contentDescription = \"Open camera\"\n )\n }\n }\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/compose/snippets/src/main/java/com/example/compose/snippets/components/Tooltips.kt#L142-L187\n```\n\n\u003cbr /\u003e\n\nKey points about the code\n\n- A `RichToolTip` displays a tooltip with a title and dismiss action.\n- When activated, either by a long-press or hovering over the `ToolTipBox` content with the mouse pointer, the tooltip is displayed for about one second. You can dismiss this tooltip by either tapping elsewhere on the screen or using the dismiss action button.\n- When the dismiss action executes, the system launches a coroutine to call `tooltipState.dismiss`. This verifies the action execution isn't blocked while the tooltip is displayed.\n- `onClick = coroutineScope.launch { tooltipState.show() } }` launches a coroutine to manually show the tooltip using `tooltipState.show`.\n- The `action` parameter allows for the adding of interactive elements to a tooltip, such as a button.\n- The `caretSize` parameter modifies the size of the tooltip's arrow.\n\nResult\n\nThis example produces the following:\n**Figure 4.** A custom rich tooltip with a dismiss action anchored to a camera icon.\n\nAdditional resources\n\n- Material Design: [Tooltips](https://m3.material.io/components/tooltips/overview)"]]