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標籤。
相關文章
- 常用標籤總結
- meta標籤總結
- HTML中IMG標籤總結HTML
- struts2標籤總結
- HTML標籤和CSS個人總結HTMLCSS
- iterator標籤總結(不斷更新)
- 佈局優化之ViewStub、Include、merge使用分析優化View
- HTML meta 標籤總結與屬性HTML
- 標籤安全管理員手冊總結
- 常用的HTML標籤詳解與總結HTML
- HTML5語義化標籤總結HTML
- 移動端meta標籤設定總結
- HTML標籤彙總HTML
- HTML5新增標籤總結和說明HTML
- [轉]strust20標籤實踐總結Rust
- android merge標籤 的使用 和 遇到的坑Android
- html中常用的標籤-超連結標籤HTML
- HTML中Progress標籤的定義及用法總結!HTML
- HTML簡介,結構,標籤以及標籤語義HTML
- a標籤裡面巢狀一個a標籤,點選子連結標籤時,同時觸發了父標籤a巢狀
- Android佈局優化之ViewStub、include、merge使用與原始碼分析Android優化View原始碼
- html的meta總結,html標籤中meta屬性使用介紹HTML
- HTML常用基礎標籤:圖片與超連結標籤全解!HTML
- properties標籤和typeAliases標籤
- Go 結構體標籤詳解Go結構體
- 指標總結指標
- HTML標籤(基本標籤的使用)HTML
- 自定義標籤【迭代標籤】薦
- java <%!%>標籤和<%%>標籤的使用Java
- 欄目總導航—MXCMSSiteNavi標籤說明
- 常用正規表示式爬取網頁資訊及分析HTML標籤總結網頁HTML
- VOC標籤轉化為YOLO標籤YOLO
- html中常用的標籤-表格標籤HTML
- html中常用的標籤-表單標籤HTML
- Golang中struct結構標籤(Tag)的使用GolangStruct
- HTML樣式插入、連結、表單標籤HTML
- Git 標籤Git
- HTML <a> 標籤HTML