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
        }
    }

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python Flow control[通俗易懂]

    Python Flow control[通俗易懂]HowtotellPythontomakeintelligentdecisionsaboutwhatcodetorun,whatcodetoskip,andwhatcodetorepeatbasedonthevaluesithas.WithFlowcharts!Flowcontrolwillneedyesornooptionstomakedecisions.InPythoncode,yesandnoisshownas

    2022年5月29日
    35
  • 12.Java- Maven 教程

    12.Java- Maven 教程一、安装引用菜鸟教程:Maven菜鸟教程地址1.下载1.Maven链接Maven下载地址:,点击跳转2.选择版本3.解压到指定地址4.并配置环境变量,引用的菜鸟教程引用菜鸟教程,菜鸟教程路径地址,点击跳转右键“计算机”,选择“属性”,之后点击“高级系统设置”,点击”环境变量”,来设置环境变量,有以下系统变量需要配置:新建系统变量MAVEN_HOME,变量值:E:\Maven\apache-maven-3.3.9编辑系统变量Path,添加变量值:;%M

    2025年10月4日
    3
  • linux 下JDK卸载与安装

    linux 下JDK卸载与安装卸载:java-versionjavajavac判断jdk是否安装(显示版本号等信息,说明已经安装)whichjava(查看JDK的安装路径) rm-rfJDK地址(卸载JDK)  rm-rf/usr/java/jdk/jdk1.8.0_172/java-versionjavajavac查看是否卸载完毕vi命令编辑文件profile vi/etc/profile删除配置的环境变量…

    2022年6月15日
    32
  • ios防止更新描述文件(ios13屏蔽系统更新描述文件)

    我们以前分享过关于iOS系统屏蔽系统更新提示的方法,但是可能文章中提及的App过于敏感,文章被删除了!刚好有人问iOS系统更新提示怎么去掉?而前段时间描述文件又更新了可以使用了,由于前段时间没有更新,今天我们分享一下详细方法,与以前的通用方法(被删除了的)相比,更加简单!虽说相比简单,但是不同人难易程度的标准可能不同,教程还得详细点,有些步骤会的可以直接跳过!该方法相比的话,比较简单,…

    2022年4月11日
    163
  • 自动化测试平台(三):用户token验证及用户增删改查接口开发

    自动化测试平台(三):用户token验证及用户增删改查接口开发上一篇我们实现了用户登录的验证并返回token。那如何去校验请求的token是否有效呢?这篇内容为你讲解token的验证及用户管理(增删改查)的功能。

    2022年6月29日
    25
  • 基于OIDC实现单点登录SSO、第三方登录[通俗易懂]

    基于OIDC实现单点登录SSO、第三方登录[通俗易懂]OIDC联合身份认证机制背景概念1OIDC身份认证协议2基于OIDC实现SSO2.1统一登录2.1.1流程2.1.2RP相关接口2.1.3OP相关接口2.2统一登出2.2.1流程2.2.2RP需要在向OP注册时提供2.2.3RP相关接口2.2.4OP相关接口2.3持续监视2.3.1流程2.3.2RP相关接口2.3.3OP相关接口3在OIDC的SSO中集成第三方登录(…

    2022年8月30日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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