<include/>
재사용하고 싶은 컴포넌트를 레이아웃에 넣을 때, include 태그를 사용한다.
ex) 상단바와 같이 재사용하는 컴포넌트를 적용할 유용
<merge/>
merge는 include 태그와 함께 더미뷰를 생성해 준다.
include 됐을 때, merge 태그는 무시되고 그 자식 View들을 태그의 부모 View에 추가한다.
레이아웃을 그릴 때 depth 가 깊어 질수록 성능은 저하된다. merge 태그를 사용해 depth 를 줄여 성능을 개선할 수 있다.
activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="mathc_parent">
<include
layout="@layout/merge_button"/>
</LinearLayout>
merge_button
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:id="@+id/btnAdd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="add"/>
<Button
android:id="@+id/btnDelete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="delete"/>
</merge>
<ViewStub/>
ViewStub는 사이즈가 0인 더미 뷰이다. 기능은 include와 동일하다 setVisibility()
또는 inflate
되었을 때, view를 그리기 시작한다.
즉, lazy include
라고 생각하면 된다.
주의 : viewstub 선언할 때, inflate된 후 선언해야한다. 그렇지 않으면
NullPointerException
발생