inflate简介,LayoutInflater和inflate()方法的用法

一、inflate简介

inflate这个方法总共有四种形式(见下面),目的都是把xml表述的layout转化为View对象。

其中有一个比较常用,View inflate(int resource, ViewGroup root),另三个,其实目的和这个差不多。

int resource,也就是resource/layout文件在R文件中对应的ID,这个必须指定。

而ViewGroup root则可以是null,null时就只创建一个resource对应的View,不是null时,会将创建的view自动加为root的child。

二、setContentView和inflate区别:

setContentView()一旦调用, layout就会立刻显示UI。
而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来。
一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这需LayoutInflater动态加载。

< TextView
android:id="@+id/tview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ATAAW.COM"
/>
< Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="按钮"
/>
在程序中动态加载以上布局。
LayoutInflater flater = LayoutInflater.from(this);
View view = flater.inflate(R.layout.example, null);
获取布局中的控件。
button = (Button) view.findViewById(R.id.button);
textView = (TextView)view.findViewById(R.id.tview);
***********************************************************

三、接下来结合源码说说inflate方法的四种形式:

inflate方法总共有四种形式,把xml表达的layout转化为view. This class is used to instantiate layout xml files into its corresponding view object. It is never be used directly——use getLayoutInflater() or getSystemService(String)getLayoutInflate() or getSystemService(String) to retrieve a standard LayoutInflater instance that is already hooked up that is already hook up to the current context and correct configured for the device you are running on. 
1. Context.public abstract object getSystemService(String name) 
2. 两种获得LayoutInflater的方法 
a. 通过SystemService获得 
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLEATER_SERVICE); 
b. 从给定的context中获取 
Public static LayoutInflater from(Context context) 
c. 两者的区别:实际上是一样的,源码 
/** 
     * Obtains the LayoutInflater from the given context. 
     */ 
    public static LayoutInflater from(Context context) { 
        LayoutInflater LayoutInflater = 
                (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        if (LayoutInflater == null) { 
            throw new AssertionError("LayoutInflater not found."); 
        } 
        return LayoutInflater; 

3. LayoutInflater.inflate()将Layout文件转换为View,专门供Layout使用的Inflater。虽然Layout也是View的子类,但在android中如果想将xml中的Layout转换为View放入.java代码中操作,只能通过Inflater,而不能通过findViewById()。 
4. LinearLayout linearLayout = 
(LinearLayout) findViewById(R.id.placeslist_linearlayout); 
linearLayout.addView(place_type_text); 
5. findViewById有两种形式 
R.layout.xx是引用res/layout/xx.xml的布局文件(inflate 方法),R.id.xx是引用布局文件里面的组件,组件的id是xx(findViewById方法)。所有的组件id都能用R.id.xx来查看,但是组件不在setContentView()里面的layout中就无法使用,Activity.findViewById()会出现空指针异常 
a. activity中的findViewById(int id) 
b. View 中的findViewById(int id) 
6.不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php ci框架 实例化类,php框架CI(codeigniter)自动加载与自主创建对象操作实例分析...

本文实例讲述了php框架CI(codeigniter)自动加载与自主创建对象操作。分享给大家供大家参考&#xff0c;具体如下&#xff1a;CI的autoload很好用&#xff0c;自动创建对象&#xff0c;但是注意&#xff0c;他的对象只有一个。我们很多情况下需要生成对象&#xff0c;这就很麻烦…

sass、gulp应用

Sass介绍n CSS 不是一个编程语言&#xff0c;可以用它来开发网页样式&#xff0c;但是没有办法用它进行编程。SASS 的出现&#xff0c;让 CSS 实现了通过代码编程来实现的方式。n SASS 是一种 CSS 开发工具&#xff0c;提供了许多便利的写法&#xff0c;让CSS 的处理实现了可编…

自定义控件SettingItemView

一、效果图 选中&#xff1a;显示自动更新开启不选择&#xff1a;显示自动更新关闭------------在布局文件中的使用方式和android自生的控件一样 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.andro…

php中如何存储多个文本框,php-如何将每个字符的文本框拆分为多个子文本框

我正在设计一个PHP表单,其中包含一些输入字段,如下图所示.如何将输入类型(文本框)拆分为单个字符子文本框,或将文本框拆分为给定字符串的每个字符的多列文本框.以及如何在其中插入数据| JOHN DOE |进入| J | O | H | N | | D | O | E |这样解决方法:的HTML的CSS#text{backgroun…

为什么会有 AOP

为什么80%的码农都做不了架构师&#xff1f;>>> AOP 面向切面的编程。 先上三张图片 三处对数据库进行操作&#xff0c; 但这三处有大量的重复的代码&#xff0c;每次都是获取session&#xff0c;获取mapper&#xff0c;执行&#xff0c; commit&#xff0c;close…

PHP有表单和js交互乱码问题,js 和 php交互问题

就是前端js发送数据给php处理&#xff0c;然后处理完之后接受php发送的返回结果&#xff0c;不用ajax&#xff0c;有其他的方法吗&#xff1f;多谢&#xff01;iframe 公子 说的很明白了。Flashiframe内嵌个表单提交到PHP页面并显示结果&#xff0c;JS读取iframe页面内的内容即…

Android应用检查更新下载安装打开

一、效果 低版本1.02检测到新版本1.03 调用android的安装activity页面 安装完成 打开 1.03版本 二、注意 必须使用签名的应用。因为android不管是虚拟机还是真机安装应用都需要签名。 在开发时&#xff0c;我们运行程序时&#xff0c;开发环境ADT会自动给我们加入一个默认的…

lnmp解析php,搭建LNMP,可以解析PHP文件-Go语言中文社区

一、安装 nginx1. yum -y install pcre-devel zlib-devel links 下载相应软件可以使用rpm -qa 软件名 来查看是否安装成功??2.useradd -u 250 -M -s /sbin/nologin nginx 建立程序用户&#xff0c;降低权限3.tar xf nginx-1.6.0.tar.gz -C /usr/src/nginx 解压并指定…

Linux vi 编辑器常见命令的使用

Linux vi 编辑器常见命令的使用 Linux下的文本编辑器有很多种&#xff0c;vi 是最常用的&#xff0c;也是各版本Linux的标配。注意&#xff0c;vi 仅仅是一个文本编辑器&#xff0c;可以给字符着色&#xff0c;可以自动补全&#xff0c;但是不像 Windows 下的 word 有排版功能。…

给控件添加小图标

一、效果 二、知识点 三、代码 <TextViewstyle"style/ContentStyle"android:drawableLeft"android:drawable/star_big_on"android:gravity"center"android:text"远程锁屏:#*lockscreen*#" />

加速计算,为何会成为 AI 时代的计算力“新宠”

随着科技的发展&#xff0c;处理大量数据和进行复杂计算的需求越来越高&#xff0c;人工智能、大数据和物联网等领域更是如此&#xff0c;传统的计算方式已经无法满足这些需求。因此&#xff0c;加速计算作为一种现代计算方式&#xff0c;成了必要的手段。加速计算具有前所未有…

Java中nextfloat怎么用,关于java的nextFloat()后面跟一个nextLine()

ArrayList studentInfors new ArrayList();Scanner sc new Scanner(System.in);for (int i 0; i StudentInfor studentInfor new StudentInfor();System.out.print("请输入学生学号&#xff1a;");studentInfor.setNum(sc.nextLine());System.out.print("请…

背景选择器selector替换按钮默认背景

一、效果 正常状态 获取焦点或按下 按钮的背景图片是.9图&#xff0c;.9图的制作过程&#xff0c;见下面博文 http://blog.csdn.net/zengmingen/article/details/50193245 二、步骤 模仿android自带的按钮控件编写1、找到android自带按钮的样式。D:\ADT\sdk\platforms\andro…

php 取数值整数的函数是,PHP取整数函数常用的四种方法小结

ceil — 进一法取整说明float ceil ( float value )返回不小于 value 的下一个整数&#xff0c;value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float&#xff0c;因为 float 值的范围通常比 integer 要大。例子 1. ceil() 例子echo ceil(4.3); // 5echo ceil(9.999);…

ios 获取控件高度

2019独角兽企业重金招聘Python工程师标准>>> 1.ios 获取控件相对屏幕的位置 需要获取的对象为view1&#xff0c;则该视图相对屏幕的位置可使用下面方法实现&#xff1a; UIWindow * window[[[UIApplication sharedApplication] delegate] window]; CGRect rect[view…

php文件上传前端页面样式,HTML实现美化上传文件样式

这篇文章介绍的内容是HTML实现美化上传文件i样式 &#xff0c;有着一定的参考价值&#xff0c;现在分享给大家&#xff0c;有需要的朋友可以参考一下传统写法上传文件效果如下图所示这个样式调整了很长时间&#xff0c;最后结果都不尽人意。非常规写法上传文件上传给真正的用于…

jquery mobile用代码弹出dialog

一、点击弹出dialog 见http://www.w3school.com.cn/jquerymobile/jquerymobile_pages.asp中“将页面作为dialog”这节二、代码弹出 思路&#xff1a;模拟一个点击事件。1、在页面上隐藏一个<a>,如下 <a id"test" href"#pagetwo" style"displ…

毕设开发日志2017-12-01-Scan超时

【前言】 本篇博客主要描述一下在开发过程中遇到的scan的超时问题。 【问题描述】 刚刚完成了对索引表的定义和建议&#xff0c;并且在单元测试中对该表进行插入和扫描时均未发现错误。但是在对该表进行整体更新时&#xff0c;需要在扫描weather表的过程中对该表进行不断的更新…

ubuntu java 1.6 安装,ubuntu 中安装java jdk 1.6

--------------------------------------------------------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://blog.csdn.net/gdt_a20/article/details/7307681-------------------------------------------------------------------------…

Oracle修改表结构字段名和字段长度

添加字段的语法&#xff1a;alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法&#xff1a;alter table tablename modify (column datatype [default value][null/not null],….); 删除字段的语法&#xff1a;alter table tab…