アクティビティ用に2つの個別のレイアウトxmlファイルを指定できるという参照を見てきました。1つは縦向き、もう1つは横向きです。しかし、私はそれを行う方法についての情報を見つけたことがありません。各アクティビティに対して、どのxmlファイルがポートレートレイアウトで、どのレイアウトがランドスケープレイアウトであるかを指定するにはどうすればよいですか?
画面サイズごとに異なるレイアウトを指定することもできますか?もしそうなら、これはどのように行われますか?
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
ファイルを作成し、コンテンツを横向きモードに合わせます。
両方のxml
のコンテンツのIDは同じであることに注意してください。
またはこれを使用します:
<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つの数量詞を適用する例です:landscape and minimum width(600dp)screen。必要なもので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/