안드로이드 xml 태그, include, merge, ViewStub 차이

woga·2021년 7월 25일
0

Android 공부

목록 보기
7/49

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

Reference

https://black-jin0427.tistory.com/180

profile
와니와니와니와니 당근당근

0개의 댓글