<include>로 레이아웃 재사용

Android는 작고 재사용 가능한 대화형 요소를 제공하기 위해 다양한 위젯을 제공하지만, 특수 레이아웃이 필요한 더 큰 구성요소를 재사용해야 할 수도 있습니다. 효율적으로 재사용하기 위해 <include><merge> 태그를 사용하여 레이아웃을 완성 한 레이아웃이 다른 레이아웃 안에 배치될 수도 있습니다.

이를 통해 예 또는 아니요 버튼 패널이나 맞춤 진행률과 같은 복잡한 레이아웃을 만들 수 있습니다. 표시됩니다. 즉, 애플리케이션에서 데이터를 추출해야 하는 는 여러 레이아웃에서 공통적으로 사용되고, 개별적으로 관리하며, 각 레이아웃에 포함합니다. 동안 맞춤형 UI 구성요소를 작성하여 View, 다음을 통해 더 쉽게 할 수 있습니다. 사용할 수 있습니다.

재사용 가능 레이아웃 생성

먼저 새 XML 파일을 만들고 재사용할 레이아웃을 정의합니다. 대상 다음은 각 활동에 포함할 제목 표시줄을 정의하는 레이아웃입니다. (titlebar.xml):

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/titlebar_bg"
    tools:showIn="@layout/activity_main" >

    <ImageView android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:src="@drawable/gafricalogo" />
</FrameLayout>

루트 View는 각각 선택합니다.

<ph type="x-smartling-placeholder">

<include> 태그 사용

재사용 가능한 구성요소를 추가하려는 레이아웃 내에서 <include> 태그 예를 들어, 다음은 이전 예:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/app_bg"
    android:gravity="center_horizontal">

    <include layout="@layout/titlebar"/>

    <TextView android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="@string/hello"
              android:padding="10dp" />
    ...
</LinearLayout>

모든 레이아웃 매개변수(android:layout_*)를 재정의할 수도 있습니다. 하위 요소(포함된 레이아웃의 루트 보기)를 <include> 태그 예를 들면 다음과 같습니다.

<include android:id="@+id/news_title"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         layout="@layout/title"/>

그러나 <include> 태그를 사용하여 레이아웃 속성을 재정의하려면 또한 android:layout_heightandroid:layout_width을 재정의하여 적용됩니다.

<merge> 태그 사용

<merge> 태그를 사용하면 한 레이아웃을 다른 레이아웃에 포함할 때 뷰 계층 구조에서 중복 뷰 그룹을 제거할 수 있습니다. <merge> 사용 사례 중 하나는 ViewGroup를 확장하여 맞춤 뷰를 구현합니다.

예를 들어 기본 레이아웃이 세로 모드인 경우 LinearLayout, 여기서 2는 연속된 뷰를 여러 레이아웃에서 재사용할 수 있으며, 그런 다음 두 개의 뷰에는 자체 루트 뷰가 필요합니다. 그러나 다른 LinearLayout를 루트로 사용하면 재사용 가능한 레이아웃의 경우 카테고리 안에 세로 LinearLayout이 생깁니다. LinearLayout 중첩된 LinearLayout는 실질적인 목적이 없으며 속도가 느립니다. UI 성능을 저하시킵니다.

대신 LinearLayout를 확장하여 맞춤 뷰를 만들고 레이아웃 XML을 사용할 수 있습니다. 하위 뷰를 설명합니다. XML의 맨 위 태그는 <merge>입니다. LinearLayout로 설정합니다.

<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/add"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/delete"/>

</merge>

이 레이아웃을 다른 레이아웃에 포함하는 경우(<include> 사용) 태그: 시스템에서 <merge> 요소를 무시하고 두 개의 버튼을 배치합니다. <include> 태그 대신 레이아웃에 직접 배치해야 합니다.

<include>에 관한 자세한 내용은 다음을 참고하세요. 레이아웃 리소스.