카테고리 없음
ViewStub
찐빵개발자
2022. 10. 18. 23:43
https://developer.android.com/training/improving-layouts/loading-ondemand?hl=ko
뷰 로드 지연 | Android 개발자 | Android Developers
때때로 레이아웃에 거의 사용되지 않지만 복잡한 보기가 필요한 때가 있습니다. 보기의 종류(예: 항목 세부정보, 진행률 표시기 또는 실행취소 메시지)에 상관없이 필요할 때만 보기를 로드하여
developer.android.com
ViewStub이란?
- lazy include
- lightweight view
- 무엇을 그리거나 레이아웃에 참여하지 않음.
- ViewStub을 이용하면, 메모리 사용을 줄이고 렌더링 속도를 높을 수 있다.
언제 사용해?
사용빈도는 낮지만 복잡한 뷰가 필요할때!
ex) landscape 처리, 가이드뷰, ...
어떻게 사용해?
android:layout 속성에 확장할 레이아웃을 지정해주고,
<ViewStub
android:id="@+id/stub_import"
android:inflatedId="@+id/panel_import"
android:layout="@layout/progress_overlay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
ViewStub에 지정된 레이아웃을 로드하려면, setVisibility(View.Visible)을 호출하거나, inflate()를 호출하자.
findViewById<View>(R.id.stub_import).visibility = View.VISIBLE
// or
val importPanel: View = findViewById<ViewStub>(R.id.stub_import).inflate()
확장되기 전까지는 stub_import를 사용하지만,
이후에는 pannel_import를 id로 사용하게 됨.
단점
<merge/> 태그를 지원하지 않음.