さまざまな画面サイズのサポートを参照してください。
通常、これはフラグメントを使用して行われますが、基本的な考え方は、フラグメントを使用するかどうかに関係なく同じです。画面サイズに応じて、アクティビティ用に2つの異なるレイアウトを作成します。
- 電話のデフォルトレイアウトの単一ペインを次の場所に保存します。
res/layout/activity_main.xml
- デュアルペインタブレットのレイアウトを次の場所に保存します
res/layout/activity_main_twopane.xml
次に、リンクに記載されている画面サイズ修飾子を使用してレイアウトエイリアスファイルを使用し、タブレットレイアウトをいつ使用するかを決定します。たとえば、large
画面と最も広い方向に少なくとも600dpの画面(Galaxy S3などの大画面電話を含む)にデュアルペインレイアウトを表示するには、次のようにします。
res/values-large/layout.xml
含まれています:
<resources>
<item name="activity_main" type="layout">@layout/activity_main_twopane</item>
<bool name="twopane">true</bool>
</resources>
res/values-sw600dp/layout.xml
含まれています:
<resources>
<item name="activity_main" type="layout">@layout/activity_main_twopane</item>
<bool name="twopane">true</bool>
</resources>
Androidシステムは、アクティビティがレイアウトをロードするときに、適切なレイアウトファイル(またはのいずれres/layout/activity_main.xml
か)のロードを処理します。res/layout/activity_main_twopane.xml
setContentView(R.layout.activity_main);
シングルペインレイアウトに存在しないビューにアクセスしようとすると、それらのビューはnullになることに注意してください(たとえば、2つはListView
もう存在しません)。特定のビューが存在するかどうかを確認することは、使用しているレイアウトを検出する1つの方法です。
XMLファイルでのオプションのブールリソースの使用にも注意してください。これは、「大画面か小画面か」という変数をJavaコードに渡すための便利な方法です。次のように、アクティビティ内のブールリソースにアクセスできます。
boolean isTwoPane = getResources().getBoolean(R.bool.twopane);