kotlin 使用viewStub

kotlin 使用viewStubViewStub是一个轻量级的的View,继承于ViewGroup,没有任何尺寸,不绘制任何东西,因此绘制或者移除时更省时。(ViewStub不可见,大小为0)优点实现View的延迟加载,避免资源的浪费,减少渲染时间,在需要的时候才加载View缺点ViewStub所要替代的layout文件中不能有标签 ViewStub在加载完后会被移除,或者说是被加载进来的layout替换掉了…

大家好,又见面了,我是你们的朋友全栈君。

ViewStub是一个轻量级的的View,继承于ViewGroup,没有任何尺寸,不绘制任何东西,因此绘制或者移除时更省时。(ViewStub不可见,大小为0)

优点

实现View的延迟加载,避免资源的浪费,减少渲染时间,在需要的时候才加载View

缺点

  • ViewStub所要替代的layout文件中不能有标签
  • ViewStub在加载完后会被移除,或者说是被加载进来的layout替换掉了

用法

<ViewStub
    android: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">

    <TextView
        android: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;

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153986.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • windows cmd定时关机命令

    windows cmd定时关机命令windowscmd定时关机命令#7200为倒计时关机时间,单位秒shutdown-S-T7200

  • 086-vdbench

    086-vdbench【1】centos下的安装首先安装JavaJDK和一些工具包sudoyuminstall-yjava-1.7.0-openjdkjava-1.7.0-openjdk-develunzip./vdbench-t【2】vdbench是一个I/O工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。…

  • python3网络爬虫一《使用urllib.request发送请求》

    python3网络爬虫一《使用urllib.request发送请求》python爱好者交流群:810306356这里有很多像你一样的伙伴,共同分享学习python的经验!使用urllib在Python2版本中,有urllib和urlib2两个库可以用来实现request的发送。而在Python3中,已经不存在urllib2这个库了,统一为urllib。Python3urllib库官方链接https://docs.pytho…

  • 信息熵、信息增益、信息增益比「建议收藏」

    信息熵、信息增益、信息增益比「建议收藏」信息熵“信息熵”是度量样本集合纯度最常用的一种指标。假定当前样本集合D中第k类样本所占的比例为pk(k=1,2,…,|y|),则D的信息熵定义为:Ent(D)的值越小,则D的纯度越高。如果上面的解释不容易理解,那么下面再通俗地解释一下:首先来看一下信息熵这个公式在数轴上的表示:可以看到,在概率为0.5的时候,信息熵是最大的(为1)。我们可以把信息熵理解为“不确定性”,当概率为0.5…

  • 设计一个具有大纯时延时间的一阶惯性环节的计算机控制系统,一阶惯性环节的计算机控制课程设计【参考】.doc…[通俗易懂]

    设计一个具有大纯时延时间的一阶惯性环节的计算机控制系统,一阶惯性环节的计算机控制课程设计【参考】.doc…[通俗易懂]计算机控制课程设计学院自动化科学与工程学生姓名学生学号班级提交日期2013年9月5日指导老师目录课程设计任务题目及要求…………………………………………………课程设计任务对象与论证…………………………………………………控制器的计算、选择以及系统仿真………………………………………硬件电路的设计…………………………………………………………系统框图…………………………

  • 史上超强最常用SQL语句大全

    史上超强最常用SQL语句大全史上超强最常用SQL语句大全,)1)DDL–数据定义语言用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter等2)DML–数据操作语言用来对数据库中表的数据进行增删改。关键字:insert,delete,update等3)DQL–数据查询语言用来查询数据库中表的记录(数据)。关键字:selewhere等4)DCL–数据控制语言用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT,REVOKE等

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号