Stati abilitato, disabilitato e caricamento
Rappresenti la disponibilità nei pulsanti.
Stati abilitato, disabilitato e caricamento è una lezione Jetpack Compose Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Jetpack Compose Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Jetpack Compose Academy include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Buttons Have Moods
A good button reflects reality: ready, blocked, or working. Compose lets you express these states so users always know what is possible. 🚦
The enabled Parameter
Every button takes an enabled flag. Set it to false and the button greys out and ignores taps automatically.
Button(
onClick = { submit() },
enabled = false
) { Text("Submit") }Drive enabled From State
The real power is binding enabled to state. Tie it to validation so the button only activates when input is ready.
Button(
onClick = { submit() },
enabled = name.isNotBlank()
) { Text("Submit") }Disabled Means Blocked
A disabled button still appears, so users see the action exists. Its faded look signals why not yet without an error message.
Show Progress While Working
For slow actions, show a loading state. Track a boolean and swap the label for a spinner while the work runs.
var loading by remember { mutableStateOf(false) }Disable During Loading
While loading, set enabled = !loading so users cannot double-tap and fire the same action twice.
Button(
onClick = { loading = true },
enabled = !loading
) { Text("Save") }Swap In a Spinner
Inside the content, branch on the flag: show a small CircularProgressIndicator when loading, the label otherwise.
Button(onClick = { }, enabled = !loading) {
if (loading) CircularProgressIndicator(Modifier.size(18.dp))
else Text("Save")
}Size the Spinner Down
The default spinner is large. Constrain it with a Modifier.size so it fits neatly where the label used to sit.
CircularProgressIndicator(
modifier = Modifier.size(18.dp),
strokeWidth = 2.dp
)Reset When Done
When the work finishes, set loading back to false. The label returns and the button becomes tappable again.
onResult = { loading = false }States Prevent Mistakes
Together, enabled and loading guard your actions: no taps before input is valid, no duplicate taps while work is in flight.
Communicate, Don't Hide
Prefer disabling over hiding a button. A visible-but-disabled control teaches users the path to unlock it.
Quick Check
Your save action takes two seconds and users keep double-tapping it.
Recap: Stateful Buttons
You learned to reflect reality: enabled gates by validity, a loading flag shows progress and blocks repeats. Honest buttons, happy users. 🎯
Domande Frequenti
La lezione «Stati abilitato, disabilitato e caricamento» è gratuita?
Sì — il testo completo di «Stati abilitato, disabilitato e caricamento» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Jetpack Compose Academy, passa a CoddyKit PRO. Il corso Jetpack Compose Academy include 4 lezioni in totale.
Cosa imparerò in «Stati abilitato, disabilitato e caricamento»?
Rappresenti la disponibilità nei pulsanti. Eserciti Jetpack Compose Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Jetpack Compose Academy?
Non è richiesta alcuna esperienza precedente. Jetpack Compose Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Stati abilitato, disabilitato e caricamento»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Jetpack Compose Academy?
Sì. Ogni lezione Jetpack Compose Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Button e onClick
- Pulsanti Text, Outlined e Icon
- Stati abilitato, disabilitato e caricamento
- clickable su qualsiasi Composable