ViewStub的使用

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

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

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

用法code

// 在佈局文件中,你就當作普通 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 的時候能夠使用方法:xml

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

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

應用場景utf-8

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

更多分享,公衆號

相關文章
相關標籤/搜索