web-dev-qa-db-ja.com

縦向きと横向きの異なるレイアウトを指定するにはどうすればよいですか?

アクティビティ用に2つの個別のレイアウトxmlファイルを指定できるという参照を見てきました。1つは縦向き、もう1つは横向きです。しかし、私はそれを行う方法についての情報を見つけたことがありません。各アクティビティに対して、どのxmlファイルがポートレートレイアウトで、どのレイアウトがランドスケープレイアウトであるかを指定するにはどうすればよいですか?

画面サイズごとに異なるレイアウトを指定することもできますか?もしそうなら、これはどのように行われますか?

133
Jay Askren

layout-landディレクトリを作成し、そのディレクトリにレイアウトXMLファイルのランドスケープバージョンを配置します。

194
Mark B

向きと解像度に応じて異なる名前の別々のフォルダに置くだけで、デバイスは画面設定に適したものを自動的に選択します

詳細はこちら:

http://developer.Android.com/guide/practices/screens_support.html

「画面サイズと密度のリソースディレクトリ修飾子」の下

59
Silvio Donnini

マウス好きの方へ!リソースフォルダとAdd new resource fileを右クリックし、Available qualifiersからorientationを選択します。

enter image description here


しかし、サブフォルダー「layout-land」を追加するなどして、手動で行うこともできます

「Your-Project-Directory\app\src\main\res」

それ以降、このサブフォルダの下のlayout.xmlファイルは、横向きモードでのみ機能します自動的に

ポートレートモードには「layout-port」を使用します。

23
AmiNadimi

ただのリマインダー:

定義した場合は、マニフェストorientationファイルのアクティビティのAndroid:configChanges属性からxmlを削除します。

Android:configChanges="orientation|screenLayout|screenSize"
19
Robin Qiu

新しいディレクトリlayout-landを作成し、xmlディレクトリと同じ名前でlayout-landlayoutファイルを作成し、コンテンツを横向きモードに合わせます。

両方のxmlのコンテンツのIDは同じであることに注意してください。

3
Nouman Shah

またはこれを使用します:

<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
Giant

次の最後の行は、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/

1
s-hunter

最新のAndroidバージョンで最も簡単な方法は、XML(テキストではなく)のデザインモードに移行することだと思います。

次に、メニューからオプション-風景のバリエーションを作成を選択します。これにより、数秒で手間をかけずにランドスケープxmlが作成されます。最新のAndroid St​​udioバージョンでは、すぐにランドスケープビューを作成できます。

enter image description here

これがお役に立てば幸いです。

1

Android St​​udio 3.x.xの最速の方法

1.アクティビティレイアウトのデザインタブに移動します

2.上部のプレビューボタンを押すと、横向きレイアウトを作成するオプションがあります(画像を確認してください)、特定の向きのXMLレイアウトファイルとして新しいフォルダが作成されます

enter image description here

0
Shid
  1. Resフォルダを右クリックし、
  2. 新規-> Androidリソースファイル
  3. 利用可能な修飾子で、方向を選択し、
  4. 選択した修飾子に追加
  5. 画面の向きで、横を選択します
  6. OKを押す

Android St​​udio 3.4.1を使用すると、layout-landフォルダーは作成されなくなりました。フォルダーを作成し、2つのレイアウトファイルをまとめます。

enter image description here

0
eos1d3