세로 및 가로 방향에 다른 레이아웃을 지정하려면 어떻게합니까?


142

활동에 대해 두 개의 개별 레이아웃 xml 파일 (세로 및 가로)을 지정할 수있는 참조를 보았습니다. 나는 그것을하는 방법에 대한 정보를 찾지 못했습니다. xml 파일이 세로 레이아웃이고 가로 레이아웃 인 각 활동에 대해 어떻게 지정합니까?

화면 크기마다 다른 레이아웃을 지정할 수도 있습니까? 그렇다면 어떻게해야합니까?

답변:


203

layout-land디렉토리를 작성하고 레이아웃 XML 파일의 가로 버전을 해당 디렉토리에 넣으십시오.


3
이것이 내가 모든 활동을 가로와 세로로 정의해야한다는 것을 의미합니까?
Jay Askren

20
아니오, 레이아웃 랜드 정의가 없으면 표준 레이아웃 디렉토리의 XML 레이아웃 만 사용합니다.
Mark B

내 경우에는 android : configChanges = "orientation | keyboardHidden | screenSize"를 사용할 때 레이아웃 랜드가 작동하지 않습니다.
Tushar Pandey

9
android : configChanges = "orientation | keyboardHidden | screenSize"에서 방향 제거
Ushal Naidoo

60

방향과 해상도에 따라 이름이 다른 별도의 폴더에 넣으면 화면 설정에 적합한 장치가 자동으로 선택됩니다.

여기에 더 많은 정보가 있습니다 :

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

"화면 크기 및 밀도에 대한 자원 디렉토리 규정 자"에서


OS 버전 1.6 이상에서만 작동합니다. 1.5를 지원하려면 다음 링크가 필요합니다. developer.android.com/guide/practices/screens-support-1.5.html
Scott Biggs

2
@Silvio Donnini-링크에 더 이상 필요한 정보가 없습니다.
itsaboutcode

2
@itsaboutcode 그렇습니다 : "구성 한정자 사용"으로 이동
Danation

26

마우스 애호가를위한! resources 폴더 및을 마우스 오른쪽 버튼으로 클릭 Add new resource file하고 사용 가능한 한정자에서 다음을 선택하십시오 orientation.

여기에 이미지 설명을 입력하십시오


그러나 하위 폴더 "layout-land"를 추가하여 수동으로 할 수 있습니다.

"귀하의 프로젝트 디렉토리 \ app \ src \ main \ res"

이후이 하위 폴더 아래의 layout.xml 파일은 가로 모드에서만 자동으로 작동합니다 .

세로 모드에는 "레이아웃 포트"를 사용하십시오.


1
이것은 나를 위해 일했습니다. 세로 버전과 동일한 이름으로 새 레이아웃 파일을 추가했습니다. Android Studio는 해당 레이아웃에 대한 폴더를 자동으로 생성했습니다. 하나는 세로 레이아웃이고 다른 하나는 가로 레이아웃입니다. 화면을 회전하면 새로운 레이아웃이 자동으로 표시됩니다.
Smitty-Werben-Jager-Manjenson

23

알림 :

제거 orientation에서 android:configChanges매니페스트에서 활동 속성 xml당신이 그것을 정의 된 경우 파일 :

android:configChanges="orientation|screenLayout|screenSize"

1
내 조각 중 일부는 방향이 될 수 있고 일부는 그렇지 않을 수 있지만 여전히 그 조각에 대한 가로 및 세로에 대한 별도의 레이아웃이 필요하기 때문에 매니페스트에 android : configChanges = "orientation | screenLayout | screenSize"가 필요한 경우 어떻게해야합니까? 방향을 동적으로 변경할 수 있습니까?
natansalda

9

Android Studio 3.xx 및 Android Studio 4.xx를위한 가장 빠른 방법

1. 활동 레이아웃의 디자인 탭으로 이동

상단에서 미리보기 방향 버튼을 눌러 가로 레이아웃을 만들 수있는 옵션이 있습니다 (이미지 확인), 해당 특정 방향에 대한 XML 레이아웃 파일로 새 폴더가 생성됩니다

여기에 이미지 설명을 입력하십시오


4

최신 Android 버전에서 가장 쉬운 방법은 텍스트가 아닌 XML의 디자인 모드로 이동하는 것입니다.

그런 다음 메뉴에서 옵션-가로 변형 만들기를 선택하십시오. 몇 초 안에 번거 로움없이 가로 xml이 생성됩니다. 최신 Android Studio 버전을 사용하면 바로 가로보기를 만들 수 있습니다.

여기에 이미지 설명을 입력하십시오

나는 이것이 당신을 위해 작동하기를 바랍니다.


3

새로운 디렉토리를 생성 layout-land한 후 생성 xml에 같은 이름의 파일을 layout-land만들고 같은 layout디렉토리와 풍경 모드가 콘텐츠를 맞 춥니 다.

두 콘텐츠의 ID xml는 동일합니다.


3

아래의 마지막 줄은 가로 및 최소 너비 (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/


2

또는 이것을 사용하십시오 :

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

0
  1. 입술 폴더를 마우스 오른쪽 버튼으로 클릭하고
  2. 신규-> Android 리소스 파일
  3. 사용 가능한 한정자에서 방향을 선택하고
  4. 선택한 한정자에 추가
  5. 화면 방향에서 가로를 선택하십시오.
  6. OK를 누릅니다

Android Studio 3.4.1을 사용 하면 더 이상 layout-land폴더를 만들지 않습니다 . 폴더를 생성하고 두 개의 레이아웃 파일을 합칩니다.

여기에 이미지 설명을 입력하십시오


2
잘못되었습니다. 폴더보기 모드 (예 : "프로젝트")를 사용하고 있지 않습니다. 가상 폴더의 스크린 샷과 같이 파일을 그룹화하는 "Android"보기 모드를 사용하고 있지만 실제 폴더 구조는 여전히 다른 모든 게시물이 설명하는 방식입니다.
monK_ 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.