ダウンロード サンプルファイル (1.8 MB)
目的に応じてテキストを使い分ける
それではまず、簡単なところから見ていきましょう。すでに解説した通り、React Native Paperには豊富なTypographyコンポーネントが存在します。リスト5で各コンポーネントを使ってみて、その挙動を確認します。
<Headline>Paper紹介</Headline>
<Title>タイトル</Title>
<Subheading>Typography</Subheading>
<Paragraph>これが段落です。</Paragraph>
<Paragraph>じゅげむじゅげむ ごこうのすりきれ {/*(略)*/}</Paragraph>
<Caption>キャプションも書けます。</Caption>
<Subheading>Button</Subheading>
<Subheading>Card</Subheading>
これを実行してみると、図5のようになります。
アプリ内で見出しや説明文を書く用途であれば、十分な種類が用意されています。画面内のテキスト装飾の種類は、あまり増やさないほうが読みやすいので、基本的にはここにあるコンポーネントを使って、アプリ内のテキストを作っていくとよいでしょう。
なお、今回は使いませんでしたが、どのコンポーネントもTextコンポーネントと同じ項目のスタイルを指定できるので、アプリに合わせてカスタマイズしてください。
3つのボタン
次はボタンです。Material Designでは、ボタンは「Text Button」「Outlined Button」「Contained Button」のいずれかの姿で表示することになっています(図6)。
これらの姿は、それぞれReact Native Paperで再現されています。Toggle Buttonもありますが、形が違うので、React Native Paperでは別枠になりました。
では、どのような見た目になるのか見てみましょう。Main.jsに、リスト6の通り追記します。
<Subheading>Button</Subheading> <Button> ふつうのボタン(mode: text) </Button> <Button mode="contained"> containedなボタン </Button> <Button mode="outlined"> outlinedなボタン </Button>
これを実行すると、図7のようになります。
どれもきれいですね。Contained ButtonやOutlined Buttonは角丸になっていますが、これは第6回で触れたborderRadiusで実装されています。これはスタイルでカスタマイズが可能なので、試しにstyle={{ borderRadius: 12 }}を付与してみましょう(図8)。
丸くなりました。前回までに学んだスタイルの知識は、ライブラリが提供するコンポーネントに対しても有効なので、出来合いのものを使うのが味気ないと感じた際は、どんどんカスタマイズしましょう。
カードで情報をまとめる
カードは、ある情報がひとまとまりのものであることを、視覚的に示せる表現方法です。Googleはこの表現をよく使っており、YouTubeアプリでの動画リストもその1つです。試しに、架空の動画のカードを作ってみましょう(リスト7)。
<Subheading>Card</Subheading>
<Card>
<Card.Cover source={require('../assets/ramen.jpg')} />{/*(1)*/}
{/*(2)*/}
<Card.Title
title="ラーメン紀行 2日目"
subtitle="炎のラーメンチャンネル"
left={props => <Avatar.Text {...props} label="YN" />} />{/*(3)*/}
<Card.Content>{/*(4)*/}
<Paragraph>
とうとうこの伝説のお店にやってきました。
</Paragraph>
</Card.Content>
<Card.Actions style={{ justifyContent: 'flex-end' }}>{/*(5)*/}
<Button>見ない</Button>
<Button mode="contained">見る</Button>
</Card.Actions>
</Card>
(1)のCard.Coverは、カバー画像と呼ばれる、サムネイルなどを表示する領域です。Imageコンポーネントと同等のsource属性が必須なので、assetsフォルダに配置した画像を読み込ませています。
(2)のCard.Titleで、カードのタイトルを指定できます。このコンポーネントは高機能で、タイトルの表示だけではなく、サブタイトルの表示や(3)のアイコンの表示までこなします。
何か本文を書きたい場合は、(4)のCard.Contentを使います。(5)のCard.Actionsは、カードの情報に対して何らかの操作を求める場合に、Buttonと併用して使います。標準のスタイルでは左寄せになるので、justifyContent: 'flex-end'を与えて右寄せにしました。これを実行すると、図9の通りになります。
どこかで見たことがある見た目になりましたね。こういったものを素早く作れるのが、ライブラリを利用する魅力です。
筆者が使う場合は、Card.CoverやCard.Actionsを使わずに、タイトルと本文だけのカードを作ることも多いです。いろいろな組み合わせを試してみてください。
まとめ
今回は、スタイルを適用済みのコンポーネントを集めたライブラリとして、React Native Paperを解説しました。最終的に、図10の画面になりました。
これまでのサンプルよりは見栄えがするものになりました。これで1つの画面の中をきれいにすることはできそうです。次回は、複数の画面の間を行き来する方法について解説します。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- 基礎からはじめるReact Native入門連載記事一覧
- この記事の著者
-
WINGSプロジェクト 中川 幸哉(ナカガワ ユキヤ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、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編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
