2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Jetpack Composeで両端にmarginを効かせたborderを作りたい

Last updated at Posted at 2022-03-16

Heightが1dpのSpacerにpadding追加しただけだと、意図したborder(罫線)が作れなかったのでメモ。

やりたいこと

以下のような両端にmarginを効かせたborderを作りたい。
スクリーンショット 2022-03-16 22.51.56.png

backgroundを塗りつぶして、高さを1dpにして、borderを作成することはよくあると思います。

例えば、Qiitaの見出し下線みたいなborderを作りたいとします。
そこで両端にpaddingを効かせても、backgroundを塗りつぶしてしまっているので意図した表現ができません。

@Composable
fun border() {
    Spacer(
        modifier = Modifier
            .background(Color.DarkGray)
            .fillMaxWidth()
            .padding(horizontal = 30.dp)
            .height(1.dp)
    )
}

スクリーンショット 2022-03-16 22.59.02.png
上図のPreviewで見ての通り、paddingは効いていますが、backgroundを塗りつぶしてしまっているので、普通の罫線になっています。

xmlで実装するときはmarginがあったのでそれでよかったんですが、Jetpack Composeにはmarginがないので、工夫する必要があります。

やり方

paddingを効かせたBoxで包みましょう。

@Composable
fun border() {
    Box(
        modifier = Modifier
            .wrapContentHeight()
            .fillMaxWidth()
            .padding(horizontal = 30.dp)
    ) {
        Spacer(
            modifier = Modifier
                .fillMaxWidth()
                .background(Color.DarkGray)
                .height(1.dp)
        )
    }
}

スクリーンショット 2022-03-16 22.51.56.png

ん〜やっぱりmargin欲しくなってしまう私はまだJetpack Compose初心者なのかもしれません(泣)

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?