ユーザー操作を有効にする

Jetpack Compose により、Text でのきめ細かい操作が可能となり、テキストをコンポーザブル レイアウト全体でより柔軟に選択できるようになりました。テキストでのユーザー操作では、他のコンポーザブル レイアウトとは異なり、Text コンポーザブルの一部に修飾子を追加することができません。このページでは、ユーザー操作を可能にする API について説明します。

テキストを選択

コンポーザブルはデフォルトでは選択不可であるため、ユーザーがアプリからテキストを選択してコピーすることはできません。テキストの選択を有効にするには、テキスト要素を SelectionContainer コンポーザブルでラップします。

@Composable
fun SelectableText() {
    SelectionContainer {
        Text("This text is selectable")
    }
}

ユーザーが選択した短い文。

選択可能な領域の特定の部分で選択を無効にすることもできます。それには、選択不可にする部分を DisableSelection コンポーザブルでラップする必要があります。

@Composable
fun PartiallySelectableText() {
    SelectionContainer {
        Column {
            Text("This text is selectable")
            Text("This one too")
            Text("This one as well")
            DisableSelection {
                Text("But not this one")
                Text("Neither this one")
            }
            Text("But again, you can select this one")
            Text("And this one too")
        }
    }
}

長い文。ユーザーは文全体を選択しようとしましたが、DisableSelection が適用された 2 つの行は選択されませんでした。

LinkAnnotation を使用してクリック可能なテキスト セクションを作成する

Text のクリックをリッスンするには、clickable 修飾子を追加します。ただし、Text 値の特定の部分に追加情報をアタッチすることもできます(特定の単語にアタッチされている URL をブラウザで開く、など)。このような場合は、LinkAnnotation を使用する必要があります。これは、テキストのクリック可能な部分を表すアノテーションです。

LinkAnnotation を使用すると、クリックすると自動的に開く Text コンポーザブルの一部に URL をアタッチできます。次のスニペットに示すようにします。

ユーザーが Text コンポーザブルの一部をクリックしたときに、カスタム アクションを構成することもできます。次のスニペットでは、ユーザーが [Jetpack Compose] をクリックするとリンクが表示され、ユーザーがリンクをクリックすると指標が記録されます。