ViewStub的使用

今天寫一下 ViewStub ,內容很簡單!php

ViewStub 是一個不可見的,沒有尺寸,不會繪製任何東西的佈局。主要用於實現 View 的延遲加載,能夠避免浪費資源,減小布局的繪畫,只有須要的時候纔會加載。java

在 ViewStub 加載完成後就會被移除,它所佔用的空間就會被新的佈局替換。仍是來講一下具體的用法,比較清晰。 android

聲明.png

用法佈局

// 在佈局文件中,你就當作普通 View 使用便可
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorAccent" android:orientation="vertical">
    <TextView android:id="@+id/tv" android:textColor="@android:color/white" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="內容區域"/>

    <ViewStub android:id="@+id/vs" android:layout_width="match_parent" android:layout_height="300dp" // 當 ViewStub 加載後,就會被下面這個佈局佔用 android:layout="@layout/activity_main"/>

</LinearLayout>

複製代碼

加載 ViewStub 的時候能夠使用方法:spa

findViewById(R.id.vs).setVisibility(View.VISIBLE);
或者
View view = (findViewById(R.id.vs).inflate());

複製代碼

注意,若是你不調用上面的方法的話,ViewStub 是不會被加載的,包括 layout 屬性中的佈局,這也就是上面所說的減小資料,只有你須要了,調用上面的方法纔會加載佈局。一旦調用上面的方法後 ViewStub 就會變成 null 了。code

應用場景cdn

頁面自己有一個佈局,當因爲某些錯誤,這個佈局不加載的時候,這個時候你就能夠讓 ViewStub 加載你預留的空白布局了。若是提早寫兩套佈局,根據狀態使用 VISIBILBE 來調整的話,這種是你在進入這個頁面,佈局上面全部的控件都會加載,是會浪費資源的(有了這個空白布局一直就處於不顯示狀態的話)xml

更多分享,公衆號
相關文章
相關標籤/搜索