Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。
そのライブラリ中のDividerについて、構成や使用方法などをまとめます。
※環境:Android Studio Hedgehog | 2023.1.1 Patch 2
Kotlin 1.9.0
Compose Compiler 1.5.1
androidx.compose.material3:material3 1.1.1
スポンサーリンク
UIの概要
Dividerは仕切り(縦:上下に分割)の表示を行うUI要素です。
並べて配置されるコンテンツの間に表示して、境界を明確にします。
@Preview_mdpi @Composable fun ColumnDividerSample() { Column(modifier = Modifier.size(320.dp, 240.dp)) { Image( painter = painterResource(R.drawable.leaf1), ... ) Divider() Image( painter = painterResource(R.drawable.leaf2), ... ) } }
スポンサーリンク
関数の引数
Dividerの状態(装飾、演出など)は、引数により指定できます。
@Composable fun Divider( modifier: Modifier = Modifier, thickness: Dp = DividerDefaults.Thickness, color: Color = DividerDefaults.color, ) { ... }
引数 | 概要 | |
---|---|---|
modifier | Modifier | UI全般のCompose修飾子 |
thickness | Dp | 仕切りの太さ |
color | Color | 仕切りの色 |
スポンサーリンク
関数の構成
Dividerの実態は背景の付いたBoxです。
仕切りの太さは引数:thicknessで指定できます。
しかし、長さは領域一杯になります。これは記述(fillMaxWidth)で固定化されており、変更できません。
@Composable fun Divider( modifier: Modifier = Modifier, thickness: Dp = DividerDefaults.Thickness, color: Color = DividerDefaults.color, ) { val targetThickness = if (thickness == Dp.Hairline) { (1f / LocalDensity.current.density).dp } else { thickness } Box( modifier .fillMaxWidth() .height(targetThickness) .background(color = color) ) }
スポンサーリンク
横の仕切りは表示不可
Dividerは縦(上下に分割)の仕切りのみで、横(左右に分割)の仕切りは表示不可です。
これは、関数の構成でBoxのサイズ定義が「height⇒太さ、width⇒長さ」になっているためです。
横の仕切りに用いれば、以下のような結果になります。
@Preview_mdpi @Composable fun RowDividerSample() { Row(modifier = Modifier.size(320.dp, 240.dp)) { Image( painter = painterResource(R.drawable.leaf1), ... ) Divider(thickness = 2.dp, color = Color.Cyan) Image( painter = painterResource(R.drawable.leaf2), ... ) } }
横の仕切りが表示可能なDivider
縦・横(左右に分割)の仕切りが表示可能なDividerを作成します。
enum class DividerDirection(val value: Boolean) { Horizontal(false), Vertical(true) } @Composable fun DividerHV( direction: DividerDirection, modifier: Modifier = Modifier, thickness: Dp = DividerDefaults.Thickness, color: Color = DividerDefaults.color ) { val targetThickness = if (thickness == Dp.Hairline) { (1f / LocalDensity.current.density).dp } else { thickness } val _modifierH = Modifier .fillMaxWidth() .height(targetThickness) val _modifierW = Modifier .width(targetThickness) .fillMaxHeight() Box( modifier .then(if (direction.value) _modifierH else _modifierW) .background(color = color) ) }
オリジナルのDividerを参考に、「height⇒太さ、width⇒長さ」と「height⇒長さ、width⇒太さ」を切り替えられる構成に変更しています。
横の仕切り縦の仕切り
@Preview_mdpi @Composable fun RowDividerHVSample() { Row(modifier = Modifier.size(320.dp, 240.dp)) { Image( painter = painterResource(R.drawable.leaf1), ... ) DividerHV(direction = DividerDirection.Horizontal) Image( painter = painterResource(R.drawable.leaf2), ... ) } }
@Preview_mdpi @Composable fun ColumnDividerHVSample() { Column(modifier = Modifier.size(320.dp, 240.dp)) { Image( painter = painterResource(R.drawable.leaf1), ... ) DividerHV(direction = DividerDirection.Vertical) Image( painter = painterResource(R.drawable.leaf2), ... ) } }
スポンサーリンク
関連記事:
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のButtonについて、構成や使用方法などをまとめます。 ※環境:Android Studio Flamingo | 2022.2.1 :androidx.compose.material3:material3:1.1.1 :androidx.compose.ui:ui:1.4.3 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のSurfaceについて、構成や使用方法などをまとめます。 ※環境:Android Studio Flamingo | 2022.2.1 :androidx.compose.material3:material3:1.1.1 :androidx.compose.ui:ui:1.4.3 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のRadioButtonについて、構成や使用方法などをまとめます。 ※環境:Android Studio Hedgehog | 2023.1.1 Kotlin 1.8.10 Compose Compiler 1.4.3 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中にUI要素を格納する機能をもつコンテナ型のUIがあります。 Column/Row/Boxがコンテナ型のUIです。構成や使用方法などをまとめます。 ※環境:Android Studio Hedgehog | 2023.1.1 Patch 1 Kotlin 1.8.10 Compose Compiler 1.4.3 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のImageについて、構成や使用方法などをまとめます。 ※環境:Android Studio Hedgehog | 2023.1.1 Patch 2 Kotlin 1.9.0 Compose Compiler 1.5.1 androidx.compose.foundation 1.5.0 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のSliderについて、構成や使用方法などをまとめます。 ※環境:Android Studio Hedgehog | 2023.1.1 Patch 2 Kotlin 1.9.0 Compose Compiler 1.5.1 androidx.compose.material3:material3 1.1.1 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のScaffoldについて、構成や使用方法などをまとめます。 ※環境:Android Studio Koala | 2024.1.1 Kotlin 1.9.0 Compose Compiler 1.5.1 androidx.compose.material3:material3 1.1.1 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のTopAppBarについて、構成や使用方法などをまとめます。 ※環境:Android Studio Koala | 2024.1.1 Kotlin 1.9.0 Compose Compiler 1.5.1 androidx.compose.material3:material3 1.1.1 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のBottomAppBarについて、構成や使用方法などをまとめます。 ※環境:Android Studio Koala | 2024.1.1 Kotlin 1.9.0 Compose Compiler 1.5.1 androidx.compose.material3:material3 1.1.1 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のFloatingActionButtonについて、構成や使用方法などをまとめます。 ※環境:Android Studio Koala | 2024.1.1 Kotlin 1.9.0 Compose Compiler 1.5.1 androidx.compose.material3:material3 1.1.1 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のSnackbarについて、構成や使用方法などをまとめます。 ※環境:Android Studio Koala | 2024.1.1 Kotlin 1.9.0 Compose Compiler 1.5.1 androidx.compose.material3:material3 1.1.1 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のLazyColumnについて、構成や使用方法などをまとめます。 ※環境:Android Studio Koala | 2024.1.1 Kotlin 1.9.0 Compose Compiler 1.5.1 androidx.compose.foundation:foundation 1.6.8 ...
Jetpack composeは、アプリ開発に必要な一通りのUIコンポーネントをライブラリで提供しています。 そのライブラリ中のLazyRowについて、構成や使用方法などをまとめます。 ※環境:Android Studio Koala | 2024.1.1 Patch 1 Kotlin 1.9.0 Compose Compiler 1.5.1 androidx.compose.foundation:foundation 1.6.8 ...
スポンサーリンク