0Pricing
Jetpack Compose Academy · レッスン

有効、無効、読み込み中の状態

ボタンに利用可能かどうかを反映します。

「有効、無効、読み込み中の状態」はCoddyKit上の無料Jetpack Compose Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJetpack Compose Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Jetpack Compose Academyコースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

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. 🎯

よくある質問

「有効、無効、読み込み中の状態」レッスンは無料ですか?

はい。「有効、無効、読み込み中の状態」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Jetpack Compose Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Jetpack Compose Academyコースには全4レッスンが含まれています。

「有効、無効、読み込み中の状態」で何を学びますか?

ボタンに利用可能かどうかを反映します。 ブラウザで直接実行するハンズオンコードでJetpack Compose Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Jetpack Compose Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJetpack Compose Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「有効、無効、読み込み中の状態」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJetpack Compose Academyレッスンでコードを書いて実行できますか?

はい。すべてのJetpack Compose Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ButtonとonClick
  2. Text、Outlined、Iconボタン
  3. 有効、無効、読み込み中の状態
  4. 任意のComposableでclickableを使う
← Jetpack Compose Academyに戻る