Android Basic
ViewStub
hik14
2021. 4. 27. 15:15
레이아웃에 사용 빈도가 매우 낮은 복잡한 뷰가 필요한 때가 있습니다.
종류(예: 항목 세부정보, 진행률 표시기 또는 실행취소 메시지)에 상관없이 필요할 때만 뷰를 로드하여 메모리 사용을 줄이고 렌더링 속도를 높일 수 있습니다.
ViewStub 만들기.
ViewStub는 차원이 없는 가벼운 뷰로, 무엇을 그리거나 레이아웃에 참여하지 않습니다.
따라서 확장하든 뷰 계층 구조에 그대로 남겨두든 리소스 사용이 적습니다.
각 ViewStub는 간단히 android:layout 속성을 포함하여 확장할 레이아웃을 지정해야 합니다.
예) ViewStub는 반투명 진행률 표시줄 오버레이용입니다.
<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 로드하기.
ViewStub에서 지정된 레이아웃을 로드하려면 setVisibility(View.VISIBLE)를 호출하여 표시되도록 설정하거나 inflate()를 호출합니다
findViewById<View>(R.id.stub_import).visibility = View.VISIBLE
// 또는
val importPanel: View = findViewById<ViewStub>(R.id.stub_import).inflate()
표시 및 확장되고 나면 ViewStub 요소는 더 이상 뷰 계층 구조의 일부가 아니며,
확장된 레이아웃으로 교체되며 이 레이아웃의 루트 뷰 ID는 ViewStub의 android:inflatedId 속성으로 지정된 ID입니다.
ViewStub에 지정된 ID android:id는 ViewStub 레이아웃이 표시 및 확장될 때까지만 유효합니다.