这是继上面的include标记示例之后的内容,地址http://blog.csdn.net/Jason 0539/article/details/26131831
在上一页的布局中,使用了一个名为viewstub的控件,下面介绍其作用和使用方法
' ViewStub是大小不可见的0 View,最佳用途是延迟加载View,避免资源浪费,并在必要时加载view
'
请注意,加载view时,viewstub本身将被新加载的view替换
因为在代码上,读完就理解了
acitivity_main.xml
relativelayoutxmlns 3360 Android=' http://schemas.Android.com/apk/RES/安卓' xmlns 3360 tools=' http://方案.安卓' xmlns 360 to ools=' 3358方案.安卓工具'安卓: layout _ wide ' match _ parent ' include Android 3330 ut _ height=' wrap _ content ' Android 3360 layout _ alignparenttop=' true ' Android 60id=' @ id/pic _ stub ' Android : layout _ width=' wrap _ content ' Android 3360 layout _ height=' wrap _ content pic _ view _ id _ after _ inflate ' Android 3360 layout=' @ layout/pic _ view '/include layout=' @ layout/pic _ vid
其中inflatedId是新加载的view的id,如果需要获取此view,请使用此inflatedId。 原始id已被替换
layout是要加载的布局,代码如下
pic_view.xml
? XML版本=' 1.0 '编码=' utf-8 '? linearlayoutxmlns 3360 Android=' http://schemas.Android.com/apk/RES/安卓'安卓: layout _ width=' match _ parent '安卓: layout _ height=' match _ parent ' imageview Android Android 3360 layout _ height=' match _ parent ' Android 3360 ST
里面只有一张照片
MainActivity.java
publicclassmainactivityextendsactivity { privateviewstubpic _ sub; @ overrideprotectedvoidoncreate (bundlesavedinstancestate ) super.oncreate ) savedinstancestate; setcontentview (r.layout.activity _ main; pic_sub=(viewstub ) findviewbyid ) r.id.pic_stub; new Timer ().schedule(newtimertask ) ({@Overridepublic void run ) ) Handler.sendemptymessage ) )1); (,1000 );//延迟1秒(}Handler handler=new Handler ) ) publicvoidHandlemessage ) Android.OS.messagemsg ) viewpic _ view=pic///imageviewiv_pic=(imageview ) pic _ view.findviewbyid (r.id.iv _ pic ); iv _ pic.setimageresource (r.drawable.pic; view view=findviewbyid (r.id.pic _ stub;//view=findviewbyid (r.id.pic _ view _ id _ after _ inflate ); //); (; }
inflate ) )时,加载的视图将取代viewstub,并返回到自己的视图对象。 这样,APP应用程序就不必执行额外的操作(findViewById )来获取对加载视图的引用)
不需要句子。 使用setvisibility时,请不要将的两个语句的顺序颠倒。 否则,将报告错误
jva.lang.illegalstateexception 3360 viewstubmusthaveanon-nullviewgroupviewparent。 因为viewstub不能重复inflate,所以只有一次inflate,set
语句检索加载的pic _ view (findviewbyid ),以检索对加载了APP应用程序的视图的引用)。 如果自己获取,则id使用inflateid
此处view为null。 pic_stub的id已不存在,因为viewstub已被替换
语句获取用inflateid加载的view正常
作者: jason0539
微博: http://weibo.com/2553717707
博客: http://blog.csdn.net/jason0539 (转载请说明出处)