ViewStub的简单用法和说明
最近无意间知道了ViewStub,所以特地的去了解了一下
都知道ViewStub是一个不可见的,大小为0的View,实际上跟include差不多,但是ViewStub要更加节约资源。被称为是“懒惰的include”,因为ViewStub只会在你需要用到的时候加载,下面就看一下用法
这里有两个布局,这个是主布局activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ehsure.lesson_one.MainActivity">
<ViewStub
android:id="@+id/main_vs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/item_one"
/>
</RelativeLayout>
这个是子布局item_one.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:id="@+id/item_one_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/str_one"
/> <Button
android:id="@+id/item_one_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_one"
android:onClick="show"
/> </LinearLayout>
这个是 Activity里面的代码:
public class MainActivity extends Activity {
private ViewStub viewStub;
private View view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//显示ViewStub的内容
viewStub = (ViewStub) findViewById(R.id.main_vs);
view = viewStub.inflate();
// viewStub.setVisibility(View.VISIBLE);
//对ViewStub包含布局的控件进行操作
TextView textView = (TextView)view.findViewById(R.id.item_one_tv);
textView.setText("hahahaha");
//你也可以通过延迟来显示或者更改你的ViewStub包含布局的内容
new Timer().schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(1);
}
},2000);
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==1){
TextView textView = (TextView)view.findViewById(R.id.item_one_tv);
textView.setText("哈哈哈");
Button button = (Button)view.findViewById(R.id.item_one_btn);
button.setText("DIANJI");
}
}
};
}
其中让ViewStub可见有两种方法: 第一是通过setVisibility,第二种就是通过inflate()方法,但是这两句代码不能共存,因为inflate方法只能调用一次,而setVisibility实际上会间接调用inflate.
其次ViewStub有一个限制就是不能使用merge标签,说到这里我顺便说一下merge标签
merge最常见的用处就是替换掉FrameLayout布局,官方的说法是这样可以减少一级布局层次,达到布局优化的效果
ViewStub的简单用法和说明的更多相关文章
- ViewStub的简单解析和使用场景
ViewStub是Android布局优化中一个很不错的标签/控件,直接继承自View.虽然Android开发人员基本上都听说过,但是真正用的可能不多. ViewStub可以理解成一个非常轻量级的Vie ...
- servlet简单用法和配置示例及说明
学习原因和目的: 我如今所接触的项目都是bs模式的web应用,而里边基本上都是用的spring MVC和前台交互,servlet貌似用的很少. 但是即便是用spring和spring MVC, ...
- WordPress 插件机制的简单用法和原理(Hook 钩子)
WordPress 的插件机制实际上只的就是这个 Hook 了,它中文被翻译成钩子,允许你参与 WordPress 核心的运行,是一个非常棒的东西,下面我们来详细了解一下它. PS:本文只是简单的总结 ...
- Visual C++ 6.0中if..else..的简单用法和基本格式
# include <stdio.h> int main (void) { float score; printf("请输入您的考试成绩:"); scanf(" ...
- UIImage的简单用法和实际操作
png,pdf不需要添加后缀名 jpg添加后缀名 存储 UIImagejpg contentMode属性 这个属性是用来设置图片的显示方式,如居中.居右,是否缩放等,有以下几个常量可供设定: UIVi ...
- UILabel的简单用法和实际操作
1.UILabel **//设置文字 label.text = @"欢迎收看灌篮高手,我是安溪教练";**//设置文字颜色label.textColor = [UIColor ...
- nodejs-websocket 的简单用法和安装
网上很多的websocket我都看不懂,看了个视频才慢慢懂了点 视频链接:https://blog.csdn.net/QQ408896436/article/details/81606553 以下都是 ...
- echo命令的简单用法和实例
在CentOS 6.8版本下,通过实例的形式,展现选项和参数的灵活运用,可以简明的了解echo的用法. 一.语法:echo [SHORT-OPTION]… [STRING]… :echo [选项]…[ ...
- [python]print简单用法和读取用户输入
代码开发环境:Eclipse 1.打印字符串: print "Hello world!" myString = "Hello world!" print myS ...
随机推荐
- 通过GET方法返回定义的任意对象
package util; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputSt ...
- Coding源码学习第四部分(Masonry介绍与使用(一))
Masonry GitHub:https://github.com/SnapKit/Masonry Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了 ...
- Emacs 参考资料
1.EmacsWiki: http://www.emacswiki.org/emacs?interface=zh-cn 2.相关博客: http://blog.csdn.net/redguar ...
- POJ 3463 有向图求次短路的长度及其方法数
题目大意: 希望求出走出最短路的方法总数,如果次短路只比最短路小1,那也是可取的 输出总的方法数 这里n个点,每个点有最短和次短两种长度 这里采取的是dijkstra的思想,相当于我们可以不断找到更新 ...
- keil uvision3 添加 STC单片机库
本人工作以来,一直从事仪表程序维护和开发工作,使用的清一色的都是microchip单片机。现在弄一个光立方的小玩意,需要用STC单片机。它有特点很明显,方便、资料多、最重要的一点便宜。 网上下载的ke ...
- JQuery基础总结上
最近在慕课网学习JQuery基础课程,发现只是跟随网站的课程学习而不去自己总结扩展的话,很难达到真正学会理解的地步. 于是先在网站上草草过了一遍课程,然后借着今天的这个时间边记录边重新整理学习一下. ...
- hive源码之新建一个coroutine
最近由于项目需要读了一下云风老大的hive项目代码,因为对lua只有熟悉的水平,下面的东西必然多多错误:),只为记录. lua_State *sL = schedule_newtask(L); str ...
- swift 命名,字符串
命名: let numberOfDogs = 6 +2; 字符串连接: let finishedMessage = username + "xx" + password; 字符串 ...
- 关于ios “<null>”的异常处理
在iOS开发过程中经常需要与服务器进行数据通讯,但是在数据接通过程中会出现:null "<null>"等问题导致莫名其妙的崩溃. 相信你一定会写各种判断来处理这些异常, ...
- css3 文字轮番滚动效果2——改进版
1.优化了之前的代码: 2.修正了先前按照文字的条目的数量计算速度的问题,现在改为按照字符的个数计算动画执行一次需要的时间,更为精确: 3.增添了每一行JS代码的注释. 4.这个案例的用途一般为告警信 ...