본문 바로가기
Android

[안드로이드] merge, include

by Sky Titan 2020. 9. 8.
728x90

include 태그

  • 한 레이아웃 파일의 내용을 다른 레이아웃에 삽입할 때 사용됨

merge 태그

  • merge 태그가 포함된 레이아웃이 다른 레이아웃에 추가될 때 merge 노드가 사라지고 자식뷰들만 새 부모 레이아웃에 직접 추가됨
  • 단일 루트노드를 생성하기 위한 불필요한 중첩 제거

=> 이 둘을 결합하여 깊게 중첩된 레이아웃 계층 구조를 만들지 않고 유연, 재사용가능한 레이아웃 정의 생성가능

EX) 위에서부터 차례로 add1.xml, add2.xml, activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        android:text="add1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</merge>
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        android:text="add2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</merge>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <include
        android:id="@+id/add1"
        layout="@layout/add1"/>

    <include
        android:id="@+id/add2"
        layout="@layout/add2"/>

</LinearLayout>

add1.xml과 add2.xml의 내용을 activity_main.xml에 추가

(merge 태그가 제거되고 activity_main.xml의 LinearLayout이 부모노드가 됨)

728x90

댓글