您的位置:首页 > 其它

LayoutInflater和inflate的用法

2015-11-24 22:44 295 查看
inflate()的作用就是将一个用xml定义的布局文件查找出来,注意与findViewById()的区别,inflate是加载一个布局文件,而findViewById则是从布局文件中查找一个控件。

1.获取LayoutInflater对象有三种方法
LayoutInflater inflater=LayoutInflater.from(this);
LayoutInflater inflater=getLayoutInflater();
LayoutInflater inflater=(LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);

2.关于LayoutInflater类inflate(int resource, ViewGroup root, boolean attachToRoot)方法三个参数的含义
resource:需要加载布局文件的id,意思是需要将这个布局文件中加载到Activity中来操作。
root:需要附加到resource资源文件的根控件,什么意思呢,就是inflate()会返回一个View对象,如果第三个参数attachToRoot为true,就将这个root作为根对象返回,否则仅仅将这个root对象的LayoutParams属性附加到resource对象的根布局对象上,也就是布局文件resource的最外层的View上,比如是一个LinearLayout或者其它的Layout对象。
attachToRoot:是否将root附加到布局文件的根视图上

 /** 

         * LayoutInflater这个类的作用类似于findViewById(), 

         * 不同点: 

         *     LayoutInflater是用来找layout下xml布局文件的,而且它会实例化 

         *     findViewById()是找具体xml布局文件下的具体widget控件,比如:Button按钮 

         *  

         *  

         *  

         * inflate就相当于将一个xml中定义的布局找出来.     

         * 因为如果在一个Activity文件里直接用findViewById()这个方法的话, 

         * 那么它所对应的是setConentView()中调用的那个layout里的组件.    

         * 因此如果在同样的Activity里用到别的layout的话, 

         *     而且你还要设置这个layout里的组件(比如:ImageView,TextView)上的内容, 

         *     那么你就必须用inflate()先将这个layout找出来, 然后再用这个layout对象去找到它上面的组件 

         *     然后进行一系列的操作 

         *      

         *     inflate()方法中参数: 

         *       1.想要用的布局文件的id 

         *       2.持有选项卡的内容,获取FrameLayout 

         *       3.true:将此处解析的xml文件做为根视图View 

         */  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: