前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Textコンポーサブル:lineHeightをstyle経由で指定した場合と直接パラメータ指定した場合とで結果が違った話

内容

Textコンポーサブル使用時、lineHeightstyle = TextStyle(lineHeight = 21.sp) で記述したときと Text(lineHeight = 21.sp)としたときとで異なる結果になった。

検証コード

@Preview
@Composable
private fun TextLineHeight<figure class="figure-image figure-image-fotolife" title="lineHeight検証">[f:id:takeR:20240630180127p:plain:alt=]<figcaption>lineHeight検証</figcaption></figure>Preview() {
    Row(modifier = Modifier.background(color = Color.White)) {
        Text(
            text = "abc",
            modifier = Modifier
                .background(color = Color.LightGray)
                .padding(horizontal = 4.dp),
            style = TextStyle(lineHeight = 21.sp),
        )
        Text(
            text = "abc",
            modifier = Modifier
                .background(color = Color.Cyan)
                .padding(horizontal = 4.dp),
            lineHeight = 21.sp
        )
    }
}

プレビューするとこんな感じに。なんでやねん。

lineHeight検証

発生条件と確認環境は以下の通り

  • Robotoフォントの場合に発生(Notoでは発生しない)
  • lineHeightとfontSizeの差が大きい場合に発生
  • Android Studio Koala | 2024.1.1
  • composeBomVersion = "2024.06.00"

NotoフォントとRobotoフォントでlineHeight未指定時の高さが違う(これも問題)のを調べていたらこんなことに...。