레이아웃 리소스
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
레이아웃 리소스는 Activity
의 UI 또는 UI 구성요소의 아키텍처를 정의합니다.
- 파일 위치:
res/layout/filename.xml
파일 이름은 리소스 ID로 사용됩니다.
- 컴파일된 리소스 데이터 유형:
View
(또는 서브클래스) 리소스를 가리키는 리소스 포인터입니다.
- 리소스 참조:
-
Java의 경우:
R.layout.filename
XML의 경우: @[package:]layout/filename
- 문법:
-
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@[+][package:]id/resource_name"
android:layout_height=["dimension" | "match_parent" | "wrap_content"]
android:layout_width=["dimension" | "match_parent" | "wrap_content"]
[ViewGroup-specific attributes] >
<View
android:id="@[+][package:]id/resource_name"
android:layout_height=["dimension" | "match_parent" | "wrap_content"]
android:layout_width=["dimension" | "match_parent" | "wrap_content"]
[View-specific attributes] >
<requestFocus/>
</View>
<ViewGroup >
<View />
</ViewGroup>
<include layout="@layout/layout_resource"/>
</ViewGroup>
참고: 루트 요소는 ViewGroup
, View
또는 <merge>
요소가 될 수 있지만, 루트 요소는 하나만 있을 수 있으며 위와 같이 android
네임스페이스를 사용하는 xmlns:android
속성을 포함해야 합니다.
- 요소:
-
<ViewGroup>
- 다른
View
요소의 컨테이너. 다양한 ViewGroup
객체가 있으며 각 객체를 사용하여 여러 방식으로 하위 요소의 레이아웃을 지정할 수 있습니다. ViewGroup
객체에는 LinearLayout
, RelativeLayout
, FrameLayout
등이 있습니다.
ViewGroup
의 모든 파생 객체가 중첩된 뷰를 허용한다고 가정해서는 안 됩니다. 일부 뷰 그룹은 AdapterView
클래스를 구현한 것이며 이 클래스는 Adapter
에서만 하위 요소를 결정합니다.
속성:
android:id
- 리소스 ID. 요소의 고유한 리소스 이름이며 이를 사용하여 애플리케이션에서
ViewGroup
의 참조를 가져올 수 있습니다. 자세한 내용은 android:id의 값 섹션을 참고하세요.
android:layout_height
- 크기 또는 키워드. 필수사항. 크기 값(또는 크기 리소스) 또는 키워드(
"match_parent"
또는"wrap_content"
)로, 그룹의 높이입니다. 자세한 내용은 android:layout_height 및 android:layout_width의 값 섹션을 참고하세요.
android:layout_width
- 크기 또는 키워드. 필수사항. 크기 값(또는 크기 리소스) 또는 키워드(
"match_parent"
또는 "wrap_content"
)로, 그룹의 너비입니다. 자세한 내용은 android:layout_height 및 android:layout_width의 값 섹션을 참고하세요.
ViewGroup
기본 클래스는 더 많은 속성을 지원하며 ViewGroup
의 각 구현에서 그보다 더 많은 속성이 지원됩니다. 사용 가능한 모든 속성의 참조는 ViewGroup
클래스의 대응하는 참조 문서를 확인하세요(예: LinearLayout
XML 속성).
<View>
- 일반적으로 위젯이라고 하는 개별 UI 구성요소입니다.
View
객체에는 TextView
, Button
, CheckBox
등이 있습니다.
속성:
android:id
- 리소스 ID. 요소의 고유한 리소스 이름이며 이를 사용하여 애플리케이션에서
View
의 참조를 가져올 수 있습니다. 자세한 내용은 android:id의 값 섹션을 참고하세요.
android:layout_height
- 크기 또는 키워드. 필수사항. 크기 값(또는 크기 리소스) 또는 키워드(
"match_parent"
또는"wrap_content"
)로, 요소의 높이입니다. 자세한 내용은 android:layout_height 및 android:layout_width의 값 섹션을 참고하세요.
android:layout_width
- 크기 또는 키워드. 필수사항. 크기 값(또는 크기 리소스) 또는 키워드(
"match_parent"
또는 "wrap_content"
)로, 요소의 너비입니다. 자세한 내용은 android:layout_height 및 android:layout_width의 값 섹션을 참고하세요.
View
기본 클래스는 더 많은 속성을 지원하며 View
의 각 구현에서 그보다 더 많은 속성이 지원됩니다. 자세한 내용은 레이아웃을 참고하세요. 사용 가능한 모든 속성의 참조는 대응하는 참조 문서를 확인하세요(예: TextView
XML 속성).
<requestFocus>
View
객체를 나타내는 모든 요소는 빈 요소를 포함할 수 있고 이 빈 요소는 화면에서 상위 요소에 초기 포커스를 줍니다. 이러한 요소는 파일당 하나만 포함할 수 있습니다.
<include>
- 레이아웃에 레이아웃 파일을 포함합니다.
속성:
layout
- 레이아웃 리소스. 필수사항. 레이아웃 리소스 참조입니다.
android:id
- 리소스 ID. 포함된 레이아웃에서 루트 뷰에 지정된 ID를 재정의합니다.
android:layout_height
- 크기 또는 키워드. 포함된 레이아웃에서 루트 뷰에 지정된 높이를 재정의합니다.
android:layout_width
도 선언된 경우에만 유효합니다.
android:layout_width
- 크기 또는 키워드. 포함된 레이아웃에서 루트 뷰에 지정된 너비를 재정의합니다.
android:layout_height
도 선언된 경우에만 유효합니다.
<include>
내에 포함된 레이아웃에서 루트 요소에 의해 지원되는 다른 모든 레이아웃 속성을 포함할 수 있고 그러한 속성은 루트 요소에 정의된 속성을 재정의합니다.
주의: <include>
태그를 사용하여 레이아웃 속성을 재정의하려면 다른 레이아웃 속성을 적용하기 위해 android:layout_height
와 android:layout_width
를 모두 재정의해야 합니다.
레이아웃을 포함하는 또 다른 방법은 ViewStub
을 사용하는 것입니다. ViewStub은 가벼운 뷰로서, 명시적으로 확장될 때까지 레이아웃 공간을 소비하지 않으며 명시적으로 확장하면 android:layout
속성에 의해 정의된 레이아웃 파일을 포함합니다. ViewStub
을 사용하는 방법에 관한 자세한 내용은 주문형 뷰 로드를 참고하세요.
<merge>
- 레이아웃 계층 구조에 그려지지 않은 대체 루트 요소입니다. 루트 요소로 이 요소를 사용하면 이 레이아웃이 이미 적절한 상위
View
를 포함하여 <merge>
요소의 하위 요소를 포함하는 레이아웃에 배치되는 경우에 유용합니다.
<include>
를 사용하여 이 레이아웃을 다른 레이아웃 파일에 포함하고 이 레이아웃이 다른 ViewGroup
컨테이너가 필요하지 않을 때에 특히 유용합니다. 레이아웃 병합에 관한 자세한 내용은 <include>로 레이아웃 재사용을 참고하세요.
android:id의 값
ID 값의 경우 일반적으로 다음 예와 같이 "@+id/name"
문법 형식을 사용합니다. 더하기 기호(+
)는 새 리소스 ID를 나타내며 리소스 정수가 아직 존재하지 않는다면 aapt
도구는 R.java
클래스에 새 리소스 정수를 만듭니다.
<TextView android:id="@+id/nameTextbox"/>
이제 nameTextbox
이름은 이 요소에 연결된 리소스 ID입니다. 그런 다음 Java에서 ID에 연결된 TextView
를 참조할 수 있습니다.
Kotlin
val textView: TextView? = findViewById(R.id.nameTextbox)
Java
TextView textView = findViewById(R.id.nameTextbox);
이 코드는 TextView
객체를 반환합니다.
하지만 이미 ID 리소스를 정의했고 아직 사용하지 않았다면 android:id
값에서 더하기 기호를 제외하여 View
요소에 ID를 적용할 수 있습니다.
android:layout_height 및 android:layout_width의 값
높이 및 너비 값은 Android에서 지원하는 모든 크기 단위(px, dp, sp, pt, in, mm) 또는 다음의 키워드를 사용하여 표현됩니다.
값 | 설명 |
match_parent |
상위 요소의 크기와 일치하도록 크기를 설정합니다. fill_parent 를 지원 중단하기 위해 API 수준 8에 추가되었습니다. |
wrap_content |
이 요소의 콘텐츠에 맞도록 필요한 크기로만 크기를 설정합니다. |
맞춤 뷰 요소
맞춤 View
와 ViewGroup
요소를 만들 수 있고 요소를 표준 레이아웃 요소와 동일하게 레이아웃에 적용할 수 있습니다. 또한, XML 요소에서 지원되는 속성을 지정할 수도 있습니다. 자세한 내용은 맞춤 뷰 구성요소 만들기를 참고하세요.
- 예:
res/layout/main_activity.xml
에 저장된 XML 파일:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
다음 애플리케이션 코드는 onCreate()
메서드에서 Activity
의 레이아웃을 로드합니다.
-
Kotlin
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
}
Java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
- 참고 항목:
-
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2024-02-16(UTC)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"필요한 정보가 없음"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"너무 복잡함/단계 수가 너무 많음"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"오래됨"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"번역 문제"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"샘플/코드 문제"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"기타"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"이해하기 쉬움"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"문제가 해결됨"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"기타"
}]
{
"last_modified": "최종 업데이트: 2024-02-16(UTC)",
"state": ""
}