kotlin 使用viewStub
生活随笔
收集整理的這篇文章主要介紹了
kotlin 使用viewStub
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ViewStub是一個輕量級的的View,繼承于ViewGroup,沒有任何尺寸,不繪制任何東西,因此繪制或者移除時更省時。(ViewStub不可見,大小為0)
優點
實現View的延遲加載,避免資源的浪費,減少渲染時間,在需要的時候才加載View
缺點
- ViewStub所要替代的layout文件中不能有標簽
- ViewStub在加載完后會被移除,或者說是被加載進來的layout替換掉了
用法
<ViewStubandroid:id="@+id/stub_id"android:layout="@layout/view_stub_layout"android:layout_width="match_parent"android:layout_height="wrap_content" />view_stub_layout.xml 文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/index_page_bg"android:orientation="vertical"><TextViewandroid:id="@+id/tv_advert_hot_expert"android:layout_width="match_parent"android:layout_height="100dp"android:layout_marginTop="5dp"android:layout_marginBottom="5dp"android:background="@color/white"android:gravity="center"android:text="預留廣告位置" /></LinearLayout>用ViewStub加載layout文件時,可以調用?setVisibility(View.VISIBLE)或者inflate()
- stub_id.inflate() 或者
- stub_id.visibility = View.VISIBLE
注意
- 一旦ViewStub visible/inflated,則ViewStub將從視圖框架中移除,其id?stub_import也會失效
- ViewStub被繪制完成的layout文件取代,并且該layout文件的root view的id是android:inflatedId指定的id?panel_import,root view的布局和ViewStub視圖的布局保持一致
所以,當inflate()之后,需要這樣寫:
tv_advert_hot_expert!!.text = "我是viewstub里的view"stub_id已經失效,如果再使用這個id,會報nullpointException;
?
?
總結
以上是生活随笔為你收集整理的kotlin 使用viewStub的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ascll完整码表(256个)
- 下一篇: FTP 协议和 HTTP 协议的比较