コンポーザブル関数の作り方
前節で、表示は図3のようになり、一通り完成したように思います。本稿の最後にリスト6のカード形式での表示を、独自のコンポーザブルとして再利用できるようなコードにしていきます。
コンポーザブルは関数
実は、プロジェクトを作成した段階で、MainActivity.ktファイルには、MainActivityの続きに、Greetingという関数が作成されています。これを利用して、MainActivity.ktファイルをリスト7のように書き換えます。その上で、実行すると、図3と同じ画面が表示されます。
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
:
setContent {
FirstComposeTheme {
Greeting( // (1)
name = "しんちゃん", // (2)
modifier = Modifier.safeDrawingPadding() // (3)
)
}
}
}
}
@Composable // (4)
fun Greeting(name: String, modifier: Modifier = Modifier) { // (5)
Text(
text = "こんにちは、${name}さん!", // (6)
color = Color(0xFF1D1B20),
fontSize = 20.sp,
fontWeight = FontWeight.Bold,
modifier = modifier // (7)
.fillMaxSize()
:
)
}
コンポーザブルというのは、リスト7の(5)のように、単なる関数です。関数名はなんでもかまいませんが(5)ではあらかじめ記述されていた、Greetingのままにしています。
ただし、コンポーザブルの関数には(4)のように@Composableアノテーションをつける必要があり、これで、コンポーザブルとして認識されます。
独自に作成したコンポーザブルを利用する場合は、(1)のようにFirstComposeThemeの引数ラムダ内でコンポーザブルを実行するだけです。
コンポーザブルの引数
コンポーザブル関数の引数は、その表示に必要なものを渡せばよいです。ただし、Modifierオブジェクトは引数のひとつとして定義しておくほうがよいでしょう。というのは、コンポーザブル関数の呼び出し元で用意されたModifierオブジェクトを再利用できるからです。
また、(3)のようにあらかじめエッジツーエッジ対応を済ませたModifierオブジェクトを渡すことができ、それに加えて、他の装飾を施すことができるからです。そのため(7)では、引数のmodifierを利用し、リスト5のコードと見比べると、続きのfillMaxSize()からの実行コードとなっています。
その他の引数は必要なものを定義できます。リスト7の(5)では、第1引数nameを定義し、名前をもらうようにし、これまででは「しんちゃん」で固定表示だった名前部分を可変にしています。リスト7では、呼び出し元の(2)で「しんちゃん」を渡しているので、結果的には同じ表示となっています。
プレビュー表示
最後に、MainActivity.ktファイル末にあらかじめ記述されているリスト8のコードに関して補足しておきます。
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
FirstComposeTheme {
Greeting("Android")
}
}
このコードは、@Previewアノテーションの名称通り、プレビュー表示用のコンポーザブルです。showBackground引数をtrueにすることで、背景もプレビュー表示されます。このプレビューコンポーザブルの中で、リスト8の通り、FirstComposeThemeの引数ラムダ内でGreeting関数を実行することで、プレビュー表示されます。
プレビュー表示は、エディター画面右上の
ボタンから、スプリット、あるいは、デザインを選択することで、確認できます。図8はスプリットを選択した画面です。
まとめ
Android Jetpack Composeについて紹介していく本連載の第1回は、いかがでしたでしょうか。
今回は、Composeの基礎的な内容として、画面に文字列を表示させるコードを紹介しました。とはいえ、Composeの特徴である宣言的UIはほとんど説明できていません。データに応じた表示の変更コードが入っていないからです。次回は、そのような内容を紹介していきます。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- この記事の著者
-
WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
