ポートレートとランドスケープのオリエンテーションにさまざまなレイアウトを指定するにはどうすればよいですか?
-
22-09-2019 - |
質問
アクティビティ用に2つの個別のレイアウトXMLファイルを指定できることへの参照を見てきました。1つはポートレート用、もう1つはランドスケープ用です。それを行う方法に関する情報を見つけることはできませんでした。各アクティビティに対して、どのxmlファイルがポートレートレイアウトであり、どのランドスケープレイアウトですか?
さまざまな画面サイズに異なるレイアウトを指定することも可能ですか?もしそうなら、これはどのように行われますか?
解決
aを作成します layout-land
ディレクトリとレイアウトXMLファイルのランドスケープバージョンをそのディレクトリに配置します。
他のヒント
オリエンテーションと解像度に応じて、異なる名前の別々のフォルダーの下に配置する必要があります。デバイスは、画面設定に適したものを自動的に選択します
詳細はこちら:
http://developer.android.com/guide/practices/screens_support.html
「画面サイズと密度のリソースディレクトリ予選」の下
ただのリマインダー:
削除する orientation
から android:configChanges
マニフェストのアクティビティの属性 xml
定義した場合はファイル:
android:configChanges="orientation|screenLayout|screenSize"
新しいディレクトリを作成します layout-land
, 、次に作成します xml
同じ名前のファイル layout-land
そのまま layout
landscapeモードのコンテンツをディレクトリと整列させます。
両方のコンテンツのIDに注意してください xml
と同じ。
またはこれを使用してください:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:scrollbars="vertical"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Add your UI elements inside the inner most linear layout -->
</LinearLayout>
</ScrollView>
以下の最後の行は、2つの量子を適用するための例です。 風景と最小の幅(600dp)画面。必要なもので600dpを更新します。
res/layout/main_activity.xml # For handsets
res/layout-land/main_activity.xml # For handsets in landscape
res/layout-sw600dp/main_activity.xml # For 7” tablets
res/layout-sw600dp-land/main_activity.xml # For 7” tablets in landscape
上記はダメンにも適用されます
res/values/dimens.xml # For handsets
res/values-land/dimens.xml # For handsets in landscape
res/values-sw600dp/dimens.xml # For 7” tablets
res/values-sw600dp-land/dimens.xml # For 7” tablets in landscape
有用なデバイスメトリック: https://material.io/tools/devices/