资讯专栏INFORMATION COLUMN

ViewStub的使用

missonce / 2193人阅读

摘要:今天写一下内容很简单是一个不可见的,没有尺寸,不会绘制任何东西的布局。在加载完成后就会被移除,它所占用的空间就会被新的布局替换。还是来说一下具体的用法,比较清晰。一旦调用上面的方法后就会变成了。

今天写一下 ViewStub ,内容很简单!

ViewStub 是一个不可见的,没有尺寸,不会绘制任何东西的布局。主要用于实现 View 的延迟加载,可以避免浪费资源,减少布局的绘画,只有需要的时候才会加载。

在 ViewStub 加载完成后就会被移除,它所占用的空间就会被新的布局替换。还是来说一下具体的用法,比较清晰。

用法

// 在布局文件中,你就当做普通 View 使用即可
<");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:background="@color/colorAccent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/tv"
        android:textColor="@android:color/white"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="内容区域"/>

    <ViewStub
        android:id="@+id/vs"
        android:layout_width="match_parent"
        android:layout_height="300dp"
              // 当 ViewStub 加载后,就会被下面这个布局占用
        android:layout="@layout/activity_main"/>

LinearLayout>

加载 ViewStub 的时候可以使用方法:

findViewById(R.id.vs).setVisibility(View.VISIBLE);
或者
View view = (findViewById(R.id.vs).inflate());

注意,如果你不调用上面的方法的话,ViewStub 是不会被加载的,包括 layout 属性中的布局,这也就是上面所说的减少资料,只有你需要了,调用上面的方法才会加载布局。一旦调用上面的方法后 ViewStub 就会变成 null 了。

应用场景

页面本身有一个布局,当由于某些错误,这个布局不加载的时候,这个时候你就可以让 ViewStub 加载你预留的空白布局了。如果提前写两套布局,根据状态使用 VISIBILBE 来调整的话,这种是你在进入这个页面,布局上面所有的控件都会加载,是会浪费资源的(有了这个空白布局一直就处于不显示状态的话)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/7290.html

相关文章

  • Android布局优化:ViewStub标签实现延迟加载(源码解析原理)

    摘要:好处官方对的解析一个不可见大小为的试图下面会分析这两点实现好处显示优酷视频加载评论列表的,当没有数据或者网络加载失败时,如果空列表的会占用资源当有数据时,才会列表的,延迟加载了布局使用步骤文件每一个必须有属性,其中的值就是被的的可以通过这 1.ViewStub好处 ViewStub is a lightweight view with no dimension that doesn’...

    Raaabbit 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<