Utilizza i tooltip per aggiungere contesto a un pulsante o a un altro elemento UI. Esistono due tipi di descrizioni comando:
- Tooltip semplici: descrivono elementi o azioni dei pulsanti con icone.
- Tooltip avanzati: forniscono maggiori dettagli, ad esempio descrivono il valore di una funzionalità. Può anche includere un titolo, un link e dei pulsanti facoltativi.
Piattaforma API
Puoi utilizzare il composable TooltipBox per implementare i tooltip nella tua app.
Puoi controllare l'aspetto di TooltipBox con questi parametri principali:
positionProvider: posiziona il tooltip in relazione ai contenuti di ancoraggio. In genere, utilizzi un provider di posizione predefinito diTooltipDefaultsoppure puoi fornirne uno tuo se hai bisogno di una logica di posizionamento personalizzata.tooltip: il composable che contiene i contenuti del tooltip. In genere, utilizzi i componibiliPlainTooltipoRichTooltip.- Utilizza
PlainTooltipper descrivere elementi o azioni dei pulsanti di icone. - Utilizza
RichTooltipper fornire maggiori dettagli, ad esempio per descrivere il valore di una funzionalità. I tooltip avanzati possono includere un titolo, un link e dei pulsanti facoltativi.
- Utilizza
state: il contenitore di stato che contiene la logica della UI e lo stato degli elementi per questo tooltip.content: il contenuto componibile a cui è ancorato il tooltip.
Visualizza un tooltip semplice
Utilizza un tooltip semplice per descrivere brevemente un elemento UI. Questo snippet di codice mostra un tooltip semplice sopra un pulsante con icona, con l'etichetta "Aggiungi ai preferiti":
@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" ) } } }
Punti chiave sul codice
TooltipBoxgenera un tooltip con il testo "Aggiungi ai preferiti".TooltipDefaults.rememberPlainTooltipPositionProvider()fornisce il posizionamento predefinito per i tooltip semplici.tooltipè una funzione lambda che definisce i contenuti della descrizione comando utilizzando il componibilePlainTooltip.Text(plainTooltipText)mostra il testo all'interno del tooltip.tooltipStatecontrolla lo stato della descrizione comando.
IconButtoncrea un pulsante cliccabile con un'icona.Icon(...)mostra un'icona a forma di cuore all'interno del pulsante.- Quando un utente interagisce con
IconButton,TooltipBoxmostra il tooltip con il testo "Aggiungi ai preferiti". A seconda del dispositivo, gli utenti possono attivare il tooltip nei seguenti modi: - Passaggio del mouse sull'icona con un cursore
- Tenendo premuta l'icona su un dispositivo mobile
Risultato
Questo esempio produce un tooltip semplice sopra un'icona:
Visualizza un tooltip avanzato
Utilizza un tooltip avanzato per fornire un contesto aggiuntivo su un elemento UI. Questo esempio crea un tooltip avanzato multilinea con un titolo ancorato a un 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" ) } } }
Punti chiave sul codice
TooltipBoxgestisce i listener di eventi per le interazioni utente e aggiornaTooltipStatedi conseguenza. QuandoTooltipStateindica che il tooltip deve essere mostrato, viene eseguita la funzione lambda del tooltip eTooltipBoxvisualizzaRichTooltip.TooltipBoxfunge da ancoraggio e contenitore sia per i contenuti sia per il tooltip.- In questo caso, i contenuti sono un componente
IconButton, che fornisce il comportamento dell'azione toccabile. Quando viene premuto a lungo (su dispositivi touch) o quando il puntatore del mouse viene posizionato sopra un punto qualsiasi dei contenuti diTooltipBox, viene visualizzato il tooltip per mostrare ulteriori informazioni.
- In questo caso, i contenuti sono un componente
- Il composable
RichTooltipdefinisce i contenuti del tooltip, inclusi il titolo e il corpo del testo.TooltipDefaults.rememberRichTooltipPositionProvider()fornisce informazioni sulla posizione per i tooltip avanzati.
Risultato
Questo esempio genera una descrizione comando estesa con un titolo associato a un'icona informazioni:
Personalizza un tooltip avanzato
Questo snippet di codice mostra un tooltip esteso con un titolo, azioni personalizzate e un cursore del testo personalizzato (freccia) visualizzato sopra un pulsante con l'icona della fotocamera:
@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" ) } } }
Punti chiave sul codice
- Un
RichTooltipmostra un tooltip con un titolo e un'azione di chiusura. - Quando viene attivato, tramite una pressione prolungata o passando il puntatore del mouse sopra i contenuti
TooltipBox, il tooltip viene visualizzato per circa un secondo. Puoi ignorare questo tooltip toccando un altro punto dello schermo o utilizzando il pulsante di azione Ignora. - Quando viene eseguita l'azione di chiusura, il sistema avvia una coroutine per chiamare
tooltipState.dismiss. In questo modo, l'esecuzione dell'azione non viene bloccata mentre viene visualizzato il tooltip. onClick = coroutineScope.launch { tooltipState.show() } }avvia una coroutine per mostrare manualmente il tooltip utilizzandotooltipState.show.- Il parametro
actionconsente di aggiungere elementi interattivi a un tooltip, ad esempio un pulsante. - Il parametro
caretSizemodifica le dimensioni della freccia della descrizione comando.
Risultato
Questo esempio produce il seguente output:
Risorse aggiuntive
- Material Design: tooltip