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 匹配文本全角转半角字符「建议收藏」

    python 匹配文本全角转半角字符「建议收藏」在对文本进行处理的时候经常会遇见要对括号和标点进行匹配常见的英文(半角)符号如()直接用正则匹配即可但是遇见全角字符(中文括号、标点),直接用正则匹配会存在问题:因为编码通常为为utf8,若直接匹配,中文括号的3字节编码会和一些中文的字节编码重复,产生意想不到的结果若用decode转为unicode编码,则可避免产生错误结果,但也无法直接用正则匹配到经过试验,发现一个看上去

    2022年7月15日
    29
  • html字体下划线取消,取消下划线与显示下划线设置

    html字体下划线取消,取消下划线与显示下划线设置a标签下划线和勾销下划线样式text-decoration配置篇以下介绍DIVCSS组织时刻,默许情况下A超链接锚文本下划线几种情况兼容各阅读器设置装备摆设。1、取消A默认下划线在CSS代码中最前面设置CSS以下:a{text-decoration:none}多么就可设置默认状况下超链接标签A字体无论是默许情况下照常鼠标悬停超链接字体均不闪现下划线。2、兼容各大涉猎器默许A超链接全显示下划线岂论…

    2022年5月26日
    40
  • IDEA 安装步骤「建议收藏」

    IDEA 安装步骤「建议收藏」1、下载与安装下载地址:https://www.jetbrains.com下载完成后安装选择安装的位置安装完成激活码:K03CHKJCFT-eyJsaWNlbnNlSWQiOiJLMDNDSEtKQ0ZUIiwibGljZW5zZWVOYW1lIjoibnNzIDEwMDEiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoi…

    2022年9月1日
    3
  • ES6 模板字符串方法[通俗易懂]

    ES6 模板字符串方法[通俗易懂]ES5中在JS中写一个模块是这样的:varcontent=’’+’’+title+’’+’’在ES6中可以这样:let这里就直接写不用引号什么的&lt;div&gt;${变量}&lt;div&gt;方便快捷用的是两个烦引号“来包裹模块…

    2022年8月21日
    4
  • git clone配置「建议收藏」

    git clone配置「建议收藏」gitclone配置

    2022年7月21日
    15
  • java 还原中文utf-8格式编码的字符

    java 还原中文utf-8格式编码的字符java 还原中文utf-8格式编码的字符

    2022年4月23日
    78

发表回复

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

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