오늘도 더 나은 코드를 작성하였습니까?

ViewStub 본문

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 레이아웃이 표시 및 확장될 때까지만 유효합니다.

 

 

'Android Basic' 카테고리의 다른 글

리사이클러뷰 RecyclerView Deep Dive  (0) 2024.09.25
Android Context란?  (0) 2024.09.22
앱에 권한 요청하기!  (0) 2021.03.18
permission 개요 및 권한 선언 평가하기  (0) 2021.03.18
viewpager2  (0) 2021.02.22