打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android中setContentView()与LayoutInflater区别
        这几天在做一个android标签页(类似选项卡)时,里面有用到LayoutInflater,开始没有注意它是干啥的,后来发现LayoutInflater怎么跟setContentView()的作用那么像呢?然后就好好追究了一下setContentView() 、LayoutInflater它们两,看看到底区别在哪?
        1)、setContentView() 、LayoutInflater二者通常在用法上的区别:
               1.1、setContentView的用法
                        setContentView(int layoutResID)       eg , setContentView(R.layout.main) 这个事初学的时候通常在onCreate方法里用到
                        setContentView(View view)    //就是放一个view对象的参数
                        setContentView(View view, ViewGroup.LayoutParams params)   //这种暂时还没有试过
                1.2、LayoutInflater用法
                         LayoutInflater inflater = getLayoutInflater()    //调用activity的getLayoutInflater()方法获得一个LayoutInflater
                         LayoutInflater localinflater = getSystemService(String nameater = getSystemService(String name)  //也是调用activity中的getSystemService方法,所用的参数也是内置的,可根据需要选择 eg , getSystemService(Context.Layout_INFLATER_SERVICE);
                         LayoutInflater inflater = LayoutInflater.from(context);   //eg , LayoutInflater.from(this);  
                         注:这三种获得LayoutInflater 的方式,本质其实是相同的,从源码中能够看出它们都是调用getSystemService()方法。
  
         2)、setContentView() 、LayoutInflater二者在Activity中使用的状态:
                  2.1、初学Android的时候,大家都知道我们在emulater上运行我们的android应用时就会有一个界面显示在模拟器上,而这里面就是我们在继承的Activity类中,重写的一个onCreate方法里使用了setContentView方法,把layout文件夹里面的布局文件(xml文件)设置进去,这样,我们在模拟器上就可以看到我们自己定义的andriod ui.
                  2.2、这里要详细介绍一下LayoutInflater
                           我们用LayoutInflater一般都是想要把一个没有被载入,或者想要动态载入的界面显示出来,在一个继承Activity基类的class中可以通过setContentView将界面显示出来,但在非继承于Activity的类中就需要LayoutInflater来Inflater了。
                           所谓被载入和没有被载入区别在于,比如,当我们启动一个应用时,与入口Activity相关的layout就是被载入(启动应用时第一个显示在屏幕上的界面,通常就是main.xml);而其他的layout则是没有被载入的,这时就要动态载入或通过跳转到另一个activity.
                          使用LayoutInflater可以得到项目中 layout文件夹下的某个xml布局文件,然后将该文件转化为View类型,有需要时再用setContentView(view)显示出来(一直不是很明白这样再显示出来有什么意义???). LayoutInflater可以与findViewById相比,只不过findViewById得到的是xml布局文件中某个具体的widget控件,如TextView/EditText/Button.....等一些界面元素
 
个人理解:如果我们的activity类不继承Activity基类,则就要通过LayoutInflater来加载界面;而如果activity类继承了Activity类,这时既可以用setContentView()来显示界面,也可以用Inflater加载界面。
 
                          
 
 
 
 
 
 
 
 
 
                   
                         
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
setContentView和inflate区别
Android LayoutInflater详解
获取LayoutInflater的三种方式分析
Android Button应用法则
Android LayoutInflater的使用
Android界面的几个问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服