Terkadang tata letak Anda memerlukan tampilan yang kompleks yang jarang digunakan. Baik berupa detail item, indikator progres, maupun pesan urungkan, Anda dapat mengurangi penggunaan memori dan mempercepat rendering dengan memuat tampilan hanya jika diperlukan.
Menunda pemuatan resource adalah teknik penting yang dapat digunakan saat Anda memiliki tampilan kompleks yang
mungkin diperlukan aplikasi Anda pada masa mendatang. Anda dapat mengimplementasikan teknik ini dengan menentukan
ViewStub
untuk tampilan yang kompleks dan jarang digunakan tersebut.
Menentukan ViewStub
ViewStub
adalah tampilan ringan tanpa dimensi yang tidak menggambar apa pun
atau berpartisipasi dalam tata letak. Dengan demikian, elemen ini mudah di-inflate dan tidak memerlukan banyak resource dalam hierarki tampilan.
Setiap ViewStub
hanya perlu menyertakan atribut android:layout
untuk
menentukan tata letak yang akan di-inflate.
ViewStub
berikut adalah untuk overlay status progres transparan. Elemen ini
hanya terlihat saat item baru sedang diimpor ke dalam aplikasi.
<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" />
Memuat Tata Letak ViewStub
Saat Anda ingin memuat tata letak yang ditentukan oleh ViewStub
, setel agar
terlihat dengan memanggil setVisibility(View.VISIBLE)
atau
inflate()
.
Kotlin
findViewById<View>(R.id.stub_import).visibility = View.VISIBLE // or val importPanel: View = findViewById<ViewStub>(R.id.stub_import).inflate()
Java
findViewById(R.id.stub_import).setVisibility(View.VISIBLE); // or View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();
Catatan: Metode inflate()
menampilkan
View
yang di-inflate setelah selesai agar Anda tidak perlu memanggil findViewById()
jika perlu berinteraksi dengan tata letak.
Setelah terlihat/di-inflate, elemen ViewStub
tidak lagi menjadi bagian dari hierarki
tampilan. Elemen ini diganti dengan tata letak yang di-inflate dan ID untuk tampilan root tata letak tersebut adalah
yang ditentukan oleh atribut android:inflatedId
ViewStub. (ID android:id
yang ditentukan untuk ViewStub
hanya valid hingga tata letak ViewStub
terlihat/di-inflate.)
Catatan: Salah satu kekurangan ViewStub
saat ini adalah
tidak adanya dukungan untuk <merge>
di tata letak yang akan di-inflate.
Untuk informasi tambahan tentang topik ini, lihat Mengoptimalkan dengan stub (postingan blog).