1
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?

jetpackComposeでTextを装飾するbuildAnnotatedStringを使ってみた

Posted at

はじめに

JetpackComposeより以前ではSpanを使ってTextの一部などを装飾していましたが、それと同じことをJetpackComposeでやろうとした時にどうやってやるかを調べて使ってみた所 なんとなくで使うには少しクセがあったので自分で公式の内容を触ってみたメモ的なものを記事にして残しておこうかと思います。

buildAnnotatedString

buildAnnotatedString Android公式

公式内での使い方の例で一番簡単なのは実際に使ってみるとこんな感じ


    Column(
        modifier = Modifier
            .fillMaxSize()
            .background(color = Color.White)
    ) {

        Text(text = buildAnnotatedString {
            withStyle(SpanStyle(color = Color.Green)) {
                append("Hello")
            }
        })
    }

スクリーンショット 2024-03-31 21.55.21.png

withStyle(SpanStyle())で装飾を設定し、{}内にappend()でテキストを設定します。

別の例にあったのはこんな感じ

    Column(
        modifier = Modifier
            .fillMaxSize()
            .background(color = Color.White)
    ) {
        Text(text =  buildAnnotatedString {
            append("Hello")
            pushStyle(SpanStyle(color = Color.Green))
            append(" World")
            pop()
            append("!")
            addStyle(SpanStyle(color = Color.Red), "Hello World".length, this.length)
        })
    }

スクリーンショット 2024-03-31 21.33.39.png

text に buildAnnotatedStringを設定し、{}内で装飾をつけていきます。
append()でテキストを設定します。
pushStyle(SpanStyle())で設定された内容は pop()までのテキストに装飾を設定します。
addStyle(SpanStyle())で後から装飾を設定することもできます。
こちらで装飾をつける場合は装飾の範囲を指定する必要があります。

    Column(
        modifier = Modifier
            .fillMaxSize()
            .background(color = Color.White)
    ) {
        Text(text = buildAnnotatedString {
            append("link: Jetpack Compose")
            addStringAnnotation(
                tag = "URL",
                annotation = "https://developer.android.com/jetpack/compose",
                start = 6,
                end = 21
            )
        })
    }

こう言った感じでURLを格納したり、タグをつけることもできる。

1
0
0

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
1
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?