ViewStub使用[通俗易懂]

ViewStub使用[通俗易懂]一、ViewStub是什么?<ViewStub>标签实质上是一个宽高都为0的不可见的轻量级View。通过延迟按需加载布局的方式提升页面加载速度。二、ViewStub使用场景某布局默认是不可见,当满足特定场景才显示。比如网络异常提示、引导页等。三、ViewStub怎么使用?1、创建布局文件layout_test.xml(注:根标签可以是布局或控件,但不能为<merge>,子标签可以使用<merge>)<TextView…

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

 

一、ViewStub是什么?

<ViewStub> 标签实质上是一个宽高都为 0 的不可见 的轻量级View。通过延迟按需加载布局的方式提升页面加载速度。

二、ViewStub使用场景

某布局默认是不可见,当满足特定场景才显示。比如网络异常提示、引导页等。

三、ViewStub怎么使用?

1、创建布局文件layout_test.xml(注:根标签可以是布局或控件,但不能为<merge>,子标签可以使用<merge>

<TextView
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="wrap_content"
         android:layout_height="40dp"
         android:text="test"/>

2、通过ViewStub的android:layout指定懒加载的布局layout_test.xml

<?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:orientation="vertical">
    <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="测试" />

    <ViewStub
            android:id="@+id/viewStub"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:layout="@layout/layout_test" />
</LinearLayout>

3、显示/隐藏布局

(1)只在满足条件进行显示

//方法1
viewStub.inflate()

//方法2
viewStub.visibility = View.VISIBLE

注:ViewStub只能被Inflate一次,inflate之后ViewStub对象会被置空,就不能够再通过ViewStub来控制显隐。其中方法2内部也是通过调用inflate,所有ViewStub的setVisibility()和inflate()都只能调用一次

(2)需要根据条件进行显隐控制(通过ViewStub.inflate()返回的根布局进行显隐操作)

    private var mIsVisiable = false
    private val mView: View by lazy { viewStub.inflate() }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button.setOnClickListener {
            if (mIsVisiable){
                mView.visibility = View.INVISIBLE
            }else{
                mView.visibility = View.VISIBLE
            }
            mIsVisiable = !mIsVisiable
        }
    }

 

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

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

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

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

(0)


相关推荐

  • stm32之继电器驱动[通俗易懂]

    stm32之继电器驱动[通俗易懂]继电器(英文名称:relay)是一种电控制器件,当输入量的变化达到规定要求时,在电气输出电路中使被控量发生预定的 阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化  的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。虽然很简单,但是可以作为入门知识来学习。第一步:找到单片机控制继电器的引脚,引

  • vmware workstation15.5 密钥_senorita是哪国语言

    vmware workstation15.5 密钥_senorita是哪国语言Workstation 11.0.0多国语言(含简体中文)+永久激活密钥”alt=”VMware Workstation 11.0.0多国语言(含简体中文)+永久激活密钥”src=”http://s7.sinaimg.cn/mw690/001gFAKHgy6O5Pq5emy06&690″width=”690″height=”239″> 昨天,VMware虚拟机11.0简体中文版正式

  • win10无法生成常规子目录下的列表_windows无法更新怎么办

    win10无法生成常规子目录下的列表_windows无法更新怎么办1.问题背景Win10只要系统安装好之后会自动生成一系列的系统文件夹,如下:这类文件夹比较特殊,它们比普通文件夹多一个“位置”选项卡,如默认的“下载”文件夹,edge和chrome浏览器会默认下载到这个文件夹,所以新系统拿到手之后,往往都需要将这些文件夹修改到其他硬盘上,不然C盘会因为下载文件的不断增多而变得异常臃肿:如果这个时候你手抖了,需要修改……………

  • Laravel的三种安装方法总结

    Laravel的三种安装方法总结

    2021年10月21日
  • 4个问题带你了解用户画像

    4个问题带你了解用户画像你是否在工作中遇到过以下场景:公司新产品上线,团队一起讨论新产品的用户是谁?优先开拓哪些用户?产品优化时候考虑,目前功能是否满足用户需求?产品页面是用户喜欢的风格吗?投放广告时需要…

  • 城市三级联动

    城市三级联动

发表回复

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

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