Merge、ViewStub標籤總結
1、Merge
作用:直接將其中的子元素新增到Merge標籤的Parent中,避免引入額外的層級。
使用時的要求:
(1)Merge只能用在佈局XMl檔案的根元素;
(2)使用Merge來載入一個佈局時,必須指定一個ViewGroup作為其父元素,並且要設定載入的attachToRoot引數為true(參照inflate(int,ViewGroup,boolean));
(3)不能在ViewStub中使用,因為ViewStub的inflate方法中根本沒有attachToRoot的設定。
具體使用:
先定義需要的佈局檔案(test_merge.xml):
<merge
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Test Merge 1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:text="Test Merge 2"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</merge>
然後在其他檔案中引用:
<include layout="@layout/merge_test"/>
也可以在自定義的View的佈局檔案中使用,此時需要將自定義View對應的佈局檔案的根結點換成merge
標籤,然後在引用的佈局檔案中直接正常引用該自定義View即可。
2、ViewStub
作用:ViewStub是一個輕量級的View,它是一個看不見的,並且不佔佈局位置的,佔用資源非常小的物件。可以為ViewStub指定一個佈局,載入佈局時,只有ViewStub會被初始化,然後當ViewStub被設定為可見時,或者呼叫了ViewStub.inflate()時,ViewStub所指向的佈局會被載入和實力化,然後ViewStub的佈局屬性都會傳給它指向的佈局。
具體使用:(事先實現定義了一個供使用的佈局檔案viewstub_test)
然後在XML佈局檔案中引用:
<ViewStub
android:id="@+id/viewstub"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/viewstub_test"/>
之後在Java程式碼中的具體邏輯處載入:
ViewStub stub = findViewById(R.id.viewstub);
stub.inflate();//載入佈局檔案例項
stub.setVisibility(View.GONE);//隱藏
其中inflate()
方法只能呼叫一次,用於載入初始化佈局(也可以直接使用setVisibility(View.VISIBILITY)
,如果再次呼叫會出異常java.lang.IllegalStateException: ViewStub must have a non-null ViewGroup viewParent
,之後可用setVisibility()
設定其可見性。如果直接呼叫setVisibility(View.INVISIBILITY)
會在第一次呼叫時將佈局顯示出來,之後的正常將佈局隱藏。無論是setVisibility(View.VISIBILITY)
還是第一次呼叫setVisibility(View.INVISIBILITY)
,如果之後再次呼叫inflate()
都會出現異常。
需要注意的:
(1)ViewStub只能用來載入一個佈局檔案,而不是具體的某個View,當然也可以把單獨的View放到佈局檔案中。如果想操作一個具體的View,還是使用visibility屬性。
(2)ViewStub中不能巢狀Merge標籤。
相關文章
- HTML中IMG標籤總結HTML
- android merge標籤 的使用 和 遇到的坑Android
- 常用的HTML標籤詳解與總結HTML
- HTML中Progress標籤的定義及用法總結!HTML
- HTML簡介,結構,標籤以及標籤語義HTML
- LeetCode Merge Two Sorted Lists(021)解法總結LeetCode
- HTML常用基礎標籤:圖片與超連結標籤全解!HTML
- Go 結構體標籤詳解Go結構體
- 織夢CMS友情連結標籤
- properties標籤和typeAliases標籤
- ViewStub你真的瞭解嗎View
- HTML標籤(基本標籤的使用)HTML
- VOC標籤轉化為YOLO標籤YOLO
- 常用正規表示式爬取網頁資訊及分析HTML標籤總結網頁HTML
- Golang中struct結構標籤(Tag)的使用GolangStruct
- HTML樣式插入、連結、表單標籤HTML
- 2020 總結&2021 目標
- HTML <a> 標籤HTML
- html標籤HTML
- Git 標籤Git
- base標籤
- JSTL標籤JS
- C#裡面超連結標籤的使用C#
- K8S標籤與標籤選擇器K8S
- iOS野指標定位總結iOS指標
- C/C++指標總結C++指標
- html標籤整理HTML
- HTML 常用標籤HTML
- HTML <label> 標籤HTML
- HTML <body>標籤HTML
- 標籤記錄
- html基本標籤HTML
- HTML <div>標籤HTML
- html列表標籤HTML
- Git tag 標籤Git
- HTML <meta>標籤HTML
- HTML <iframe>標籤HTML
- HTML <span>標籤HTML
- HTML <head>標籤HTML