安卓 setContentView使用「建议收藏」

安卓 setContentView使用「建议收藏」setContentView(R.layout.main)在android代码里经常能看见,R.layout.main是个布局文件即控件,设置如何摆放如何显示的,setContentView就是设置一个Activity的显示界面,这句话就是设置这个这句话所再的Activity采用R.layout下的main布局文件进行布局使用setContentView可以在Activity中动

大家好,又见面了,我是你们的朋友全栈君。setContentView(R.layout.main)
在android代码里经常能看见

R.layout.main是个布局文件即控件,设置如何摆放如何显示的,setContentView就是设置一个Activity的显示界面,
这句话就是设置这个这句话所再的Activity采用R.layout下的main布局文件进行布局

使用setContentView可以在Activity中动态切换显示的View,这样,不需要多个Activity就可以显示不同的界面,
因此不再需要在Activity间传送数据,变量可以直接引用。但是,在android SDK给我们建的默认的Hello World程序中,
调用的是setContentView(int layoutResID)方法,如果使用该方法切换view,在切换后再切换回,无法显示切换前修改后的样子
,也就是说,相当于重新显示一个view,并非是把原来的view隐藏后再显示。其实setContentView是个多态方法,
我们可以先用LayoutInflater把布局xml文件引入成View对象,再通过setContentView(View view)方法来切换视图。
因为所有对View的修改都保存在View对象里,所以,当切换回原来的view时,就可以直接显示原来修改后的样子。

1.常用的构造函数:

  1)setContentView(int layoutResID)

  2)setContentView(View view)

  3)setContentView(View view, ViewGroup.LayoutParams params)

2.用法

复制代码
1)setContentView(R.layout.main);

2)LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

   View view = (View) inflater.inflate(R.layout.apploader, null, true);

   setContentView(view);
复制代码

3.两种用法的适用场景:

    setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来。

    一般在activity中通过setContentView()将界面显示出来,但是如果要在非activity中如何对控件布局进行设置操作,就需LayoutInflater动态加载。

 

LayoutInflater:

获得 LayoutInflater 实例的三种方式

1. LayoutInflater inflater = getLayoutInflater();  //调用Activity的getLayoutInflater()

2. LayoutInflater localinflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

3. LayoutInflater inflater = LayoutInflater.from(context);   

其实,这三种方式本质是相同的,从源码中可以得出结论:这三种方式最终本质是都是调用的Context.getSystemService()。

 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153261.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 决不随波逐流,记住15件事让你达成目标

    决不随波逐流,记住15件事让你达成目标

    2021年11月29日
    40
  • iOS之个人工作常用知识

    iOS之个人工作常用知识

    2021年9月11日
    54
  • 【Redis】五种数据类型及其使用场景

    Redis数据类型五种类型与类比java的模型string–>Stringhash–>Hashmaplist–>LinkListset–>HashSetsorted_set–>TreeSetString类型redis数据存储格式redis自身是一个Map类型的存储方式,其中所有的数据都是采用key:value的形式存储我们讨论的数据类型指的是存储的数据的类型,也就是value部分的类型,key部分永远都是字符串St

    2022年4月9日
    76
  • python3基础:操作xml

    python3基础:操作xmlXML指的是可扩展标记语言(eXtensibleMarkupLanguage),和json类似也是用于存储和传输数据,还可以用作配置文件。类似于HTML超文本标记语言,但是HTML所有的标签都是预定义的,而xml的标签可以随便定义。XML元素指从开始标签到结束标签的部分(均包括开始和结束)一个元素可以包括:其它元素<aa> <bb></bb&gt…

    2022年7月12日
    19
  • INT0中断_中断请求寄存器

    INT0中断_中断请求寄存器 当进程执行系统调用时,先调用系统调用库中定义某个函数,该函数通常被展开成前面提到的_syscallN的形式通过INT0x80来陷入核心,其参数也将被通过寄存器传往核心。 在这一部分,我们将介绍INT0x80的处理函数system_call。 思考一下就会发现,在调用前和调用后执行态完全不相同:前者是在用户栈上执行用户态程序,后者在核心栈上执行核心态代码。那么,为了保证在核心内部执行完系统调用…

    2025年11月5日
    3
  • JVM – 内存模型

    JVM – 内存模型JVM-内存模型

    2022年5月24日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号