フォームUIとは?
フォームの役割
フォームUIは、ユーザーがデータを入力し、アプリに情報を送信するための重要な要素です。例えば、ログイン画面や検索機能、アンケートフォームなど、さまざまな場面で使用されます。
Jetpack ComposeにおけるフォームUI
Jetpack Composeでは、従来のXMLレイアウトではなく、KotlinコードのみでフォームUIを作成できます。直感的でシンプルな記述が可能なため、開発の効率が向上します。
本記事では、フォームUIの基本となる「ボタン」「テキストフィールド」「チェックボックス」の作成方法を詳しく解説します。
ボタンの作成
基本的なボタン
Jetpack Composeでは、Button
コンポーネントを使用してボタンを作成できます。
@Composable
fun SimpleButton() {
Button(onClick = { /* ボタンがクリックされた時の処理 */ }) {
Text(text = "クリック")
}
}
Button
:クリック可能なボタンを定義onClick
:クリック時の動作を定義Text
:ボタン内に表示するテキスト
カスタムスタイルのボタン
ボタンの背景色や角丸デザインを変更することも可能です。
@Composable
fun StyledButton() {
Button(
onClick = { /* ボタンの処理 */ },
colors = ButtonDefaults.buttonColors(backgroundColor = Color.Blue),
shape = RoundedCornerShape(8.dp)
) {
Text(text = "カスタムボタン", color = Color.White)
}
}
backgroundColor
:ボタンの背景色を指定shape
:ボタンの角を丸めるText
のcolor
:テキストの色を変更
テキストフィールドの作成
基本的なテキストフィールド
ユーザーからの入力を受け付けるには、TextField
を使用します。
@Composable
fun SimpleTextField() {
var text by remember { mutableStateOf("") }
TextField(
value = text,
onValueChange = { text = it },
label = { Text("入力してください") }
)
}
value
:現在の入力値onValueChange
:入力値の変更を監視label
:フィールドのラベルを設定
プレースホルダーとスタイルの適用
placeholder
を追加することで、未入力時にガイドテキストを表示できます。
@Composable
fun StyledTextField() {
var text by remember { mutableStateOf("") }
TextField(
value = text,
onValueChange = { text = it },
label = { Text("名前を入力") },
placeholder = { Text("例: 山田太郎") },
colors = TextFieldDefaults.textFieldColors(backgroundColor = Color.LightGray)
)
}
placeholder
:未入力時に表示される補助テキストtextFieldColors
:背景色のカスタマイズ
チェックボックスの作成
基本的なチェックボックス
Checkbox
を使って、ユーザーが選択できるUIを作成できます。
@Composable
fun SimpleCheckbox() {
var checked by remember { mutableStateOf(false) }
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = checked,
onCheckedChange = { checked = it }
)
Text(text = if (checked) "選択済み" else "未選択")
}
}
checked
:チェックボックスの状態(選択済み or 未選択)onCheckedChange
:チェック状態の変更を監視
カスタムスタイルのチェックボックス
チェックボックスの色を変更するには、colors
を指定します。
@Composable
fun StyledCheckbox() {
var checked by remember { mutableStateOf(false) }
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = checked,
onCheckedChange = { checked = it },
colors = CheckboxDefaults.colors(checkedColor = Color.Green)
)
Text(text = if (checked) "承認済み" else "未承認")
}
}
checkedColor
:チェック時の色を変更
フォームUIの組み合わせ
ボタン、テキストフィールド、チェックボックスを組み合わせて、簡単なフォームを作成してみましょう。
@Composable
fun SimpleForm() {
var name by remember { mutableStateOf("") }
var agreed by remember { mutableStateOf(false) }
Column(modifier = Modifier.padding(16.dp)) {
TextField(
value = name,
onValueChange = { name = it },
label = { Text("名前") }
)
Row(verticalAlignment = Alignment.CenterVertically) {
Checkbox(
checked = agreed,
onCheckedChange = { agreed = it }
)
Text(text = "利用規約に同意します")
}
Button(onClick = { /* 送信処理 */ }) {
Text(text = "送信")
}
}
}
TextField
で名前を入力Checkbox
で利用規約の同意を管理Button
でフォームの送信を実装
まとめ
Jetpack Composeを使えば、シンプルなコードでフォームUIを作成できます。
Button
でクリック操作を実装TextField
でユーザー入力を受け付けCheckbox
でチェック状態を管理
これらのコンポーネントを組み合わせることで、直感的で使いやすいフォームを作成できます。Jetpack Composeを活用して、より便利なUIを実装してみましょう!