首页 > 其他分享 >布局技巧:使用ViewStub

布局技巧:使用ViewStub

时间:2023-05-01 14:02:12浏览次数:41  
标签:ViewStub 技巧 布局 使用 inflate id View


Android API 中文(14) —— ViewStub

多亏了<include />标签,在Android里,很容易就能做到共享和重用UI组件。在Android开发中,很容易就能创建出复杂的UI结构,结果呢,用了很多的View,且其中的一些很少使用。针对这种情况,谢天谢地,Android还为我们提供了一个特别的构件——ViewStub,它可以使你充分享受<include />的好处而不会造成无用View的浪费。

ViewStub是一个看不见的,轻量级的View。它没有尺寸,也不会绘制以及以某种形式参与到布局中来。这意味着ViewStub去inflate以及保留在View层次中的代价是很廉价的。ViewStub最佳的描述称之为“懒惰的include”。ViewStub中引用的布局只在你想添加到UI上时才会显示。

为了使用ViewStub,你所有需要做的是指定android:id特性,便于以后inflate,指定android:layout特性,引用布局文件。ViewStub还允许你使用第三个特性,android:inflatedId,你可以使用它来重写包含的布局文件中的根元素的id。最后,在ViewStub上设定的layout_gravity参数将会应用到包含的布局文件的底部。
这里有个例子:

<ViewStub
  android:id="@+id/stub_import"
  android:inflatedId="@+id/panel_import"
  android:layout="@layout/progress_overlay"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_gravity="bottom" />



当你准备inflate ViewStub时,调用inflate()方法即可。你还可以设定ViewStub的Visibility为VISIBLE或INVISIBLE,也会触发inflate。注意的是,使用inflate()方法能返回布局文件的根View:


((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
// or
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();



有一点需要记住的是:当ViewStub inflate后,这个ViewStub就从View层次中移除了。因此,没有必要保留一个对ViewStub的引用(如在类的字段里)。


ViewStub是快捷编程与高效编程之间的产物。与其手动的inflate View并在运行时添加到View层次上,不如简单的使用ViewStub。它相当“廉价”且易于使用。ViewStub唯一的缺点是现在不支持<merge />标签。



viewStub,requestFocus,merge,include的用法:


http://breaklayer.iteye.com/blog/883745


标签:ViewStub,技巧,布局,使用,inflate,id,View
From: https://blog.51cto.com/u_5454003/6238876

相关文章

  • 利用ScrollView实现布局自动滚动
    首先1,获得ScrollViewsc=(ScrollView)findViewById(R.id.scroll);//scroll对象    LinearLayoutmlayout=(LinearLayout)findViewById(R.id.mlayout);//scrollView中包含的布局对象2,定义一个HandlerprivatefinalHandlermHandler=newHa......
  • IntelliJ IDEA 中有什么让你相见恨晚的技巧?
     作为一款非常强大的集成开发环境,IntelliJIDEA提供了许多让人惊叹的功能和技巧。以下是一些让我相见恨晚的IntelliJIDEA技巧:IntelliJIDEA2022.1最新注册教程代码自动完成:IntelliJIDEA的代码自动完成功能非常出色,可以自动补全代码和方法名。可以使用Tab键快速选......
  • IOS 小技巧积累
    1.使用@property和@synthesize声明一个成员变量,给其赋值是时要在前面加上"self.",以便调用成员变量的setmember方法。   直接调用成员变量并且给其赋值:member=[NSStringstringWithFormat:@””];将不执行setmember方法。  使用self调用成员变量并且给其赋值:self.member=......
  • 你必须知道的RelativeLayout布局知…
    RelativeLayout是应用开发中必须掌握的布局方式,今天给大家分享一些它的常用属性说明。我们从RelativeLayout可以知道,该布局的父子Container中所有的Widgets之间的位置都是相对的。你可以把WidgetA放在Widget的左下方,或者放在Widget的底边并和Container的底边之间。它允许为Contai......
  • 答题积分小程序云开发实战-界面交互篇:答题页布局样式与逻辑交互开发
    微信小程序云开发实战-答题积分赛小程序界面交互篇:答题页布局样式与逻辑交互开发答题页原型稿实现思路分析:1)答题未选中状态;2)答题已选中状态,点击确定提交选中结果;3)显示答案以及题目解析,如回答正确,自动进入下一题;如回答错误,停留在当前答题页面;4)每次答完10题,答对分数才会计入积分;5)最后......
  • 【移动端网页布局】移动端网页布局基础概念 ⑤ ( 视网膜屏技术 | 二倍图概念 | 代码示
    文章目录一、视网膜屏技术二、二倍图概念三、代码示例一、视网膜屏技术PC端和早期的移动端网页中,CSS中配置的1像素对应的就是物理屏幕中的1像素;Retina视网膜屏幕技术出现后,将多个物理像素压缩到一块屏幕中,可以达到更高的分辨率,画面显示效果更好;下......
  • Shodan的http.favicon.hash语法详解与使用技巧
    本文转载自:https://www.cnblogs.com/miaodaren/p/9177379.html在Shodan搜索中有一个关于网站icon图标的搜索语法,http.favicon.hash,我们可以使用这个语法来搜索出使用了同一icon图标的网站,不知道怎么用的朋友请参考我上一篇文章。通过上一篇文章我们了解到,由于ha......
  • Spring XML配置的12个技巧
    Spring是一个强有力的java程序框架,其被广泛应用于java的程序中。它用POJO提供了企业级服务。Spring利用依赖注入可以获得简单而有效的测试能力。Springbeans,依赖关系,以及服务所需要的bean都将在配置文件中予以描述,配置文件一般采用XML格式。然而XML配置文件冗长而不易使用,在你进......
  • hdoj 前m大的数 1280 (技巧&暴力)
    前m大的数TimeLimit:2000/1000MS(Java/Others)   MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):14345   AcceptedSubmission(s):4888ProblemDescription还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的......
  • css--常见左右盒子宽度高度自适应布局
    css--常见左右盒子宽度高度自适应布局 前言前端开发工程师最基础的技能要求是根据ui设计稿还原网页,这就缺少不了必要的网页布局,首先看下最近小伙伴问我的一个问题,他说一个网页有左右两个部分,左右两个部分的宽高度都不固定,要使得右部分的宽度充满剩余的部分,并且高度随......