flate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的,没有找到的同时并显示功能。最近做的一个项目就是这一点让我迷茫了好几天。
Android上还有一个与Inflate()类似功能的方法叫findViewById(),二者有时均可使用,但也有区别
区别在于:
如果你的Activity里用到别的layout,比如对话框layout,你还要设置这个layout上的其他组件的内容,你就必须用inflate()方法先将对话框的layout找出来,然后再用findViewById()找到它上面的其它组件。例如:

  View view1=View.inflate(this,R.layout.dialog_layout,null);  TextViewdialogTV=(TextView)view1.findViewById(R.id.dialog_tv);  dialogTV.setText("abcd");
View view1=View.inflate(this,R.layout.dialog_layout,null);
TextViewdialogTV=(TextView)view1.findViewById(R.id.dialog_tv);
dialogTV.setText("abcd"); 

LayoutInflater和inflate的用法:

package cn.csdn.activity;  import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;  public class TabHostActivity extends TabActivity {  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  TabHost tabhost = this.getTabHost();  /** * 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 */  LayoutInflater.from(this).inflate(R.layout.tabhost_layout,  tabhost.getTabContentView(), true);  /**在这里添加的时候: *       1.必须指定 tab 的内容,必须为 id, 即:setContent(R.id.text) *       2.必须设置tab 上的文字或图片  , 即:setIndicator("已接电话") *       3.返回一个 TabHost.TabSpec 对象,其参数用于标识一个 tab 的 tag,即:newTabSpec("tab1") */  tabhost.addTab(tabhost.newTabSpec("tab1").setIndicator("已接电话")  .setContent(R.id.text));  tabhost.addTab(tabhost.newTabSpec("tab2").setIndicator("呼出电话",  getResources().getDrawable(R.drawable.ic_launcher))  .setContent(R.id.text));  tabhost.addTab(tabhost.newTabSpec("tab3").setIndicator("未接电话")  .setContent(R.id.text));  }
}  

一、LayoutInflater
LayoutInflater其实是在res/layout/下找到xml布局文件,并且将其实例化,这个和findViewById()有点相似,后者是找xml布局文件下的具体widget控件(如Button、TextView等)
作用:
1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。

LayoutInflater 是一个抽象类,在文档中如下声明:
public abstract class LayoutInflater extends Object

获得 LayoutInflater 实例的三种方式

  1. LayoutInflater inflater = getLayoutInflater(); //调用Activity的getLayoutInflater()
    例:View toastRoot = getLayoutInflater().inflate(R.layout.toast, null);

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

  3. LayoutInflater inflater = LayoutInflater.from(context);
    例:View convertView = LayoutInflater.from(mContext).inflate(R.layout.activity_contact, null);

二、inflate
通俗的说,inflate就相当于将一个xml中定义的布局找出来.因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组件.
因此如果你的Activity里如果用到别的layout,比如对话框上的layout,你还要设置对话框上的layout里的组件(像图片ImageView,文字TextView)上的内容,你就必须用inflate()先将对话框上的layout找出来,然后再用这个layout对象去找到它上面的组件,如:
  View view=View.inflate(this,R.layout.dialog_layout,null);
  TextView dialogTV=(TextView)view.findViewById(R.id.dialog_tv);
  dialogTV.setText(“abcd”);
 如果组件R.id.dialog_tv是对话框上的组件,而你直接用this.findViewById(R.id.dialog_tv)肯定会报错.

Android之Inflate()方法用途相关推荐

  1. Android之Inflate()方法用途+setContentView和inflate区别

    引用:http://blog.chinaunix.net/uid-27024249-id-3304935.html Android之Inflate()方法用途 Inflate()作用就是将xml定义的 ...

  2. Inflate()---Android之Inflate()方法用途

    Inflate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的,没有找到的同时并显示功能.最近做的一个项目就是这一点让我迷茫了好几天. android上还有一个与Inflate()类 ...

  3. Android中inflate方法的用法

    Inflate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的,没有找到的同时并显示功能.最近做的一个项目就是这一点让我迷茫了好几天. android上还有一个与Inflate()类 ...

  4. Android之 inflate() 方法总结

    文章目录 一.引言 二.源码分析 2.1 源码跟踪 2.2 结论 一.引言 inflater.inflate(R.layout.layout_inflate_test,null); inflater. ...

  5. Android inflate方法与 findViewById 方法区别

    在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...

  6. 【Android 界面效果43】Android LayoutInflater的inflate方法中attachToRoot的作用

    我们在ListView的Adapter的getView方法里面经常会调用两个参数的inflate方法, mInflater.inflate(R.layout.adv_viewpager, null); ...

  7. 带你看懂LayoutInflater中inflate方法

    关于inflate问题,我想很多人多多少少都了解一点,网上也有很多关于这方面介绍的文章,但是枯燥的理论或者翻译让很多小伙伴看完之后还是一脸懵逼,so,我今天想通过三个案例来让小伙伴彻底的搞清楚这个东东 ...

  8. Android --- View.inflate()的详细介绍

    误用 LayoutInflater 的 inflate() 方法已经不是什么稀罕事儿了-- 做 Android 开发做久了,一定会或多或少地对布局的渲染有一些懵逼: 1.View.inflate() ...

  9. 三个案例带你看懂LayoutInflater中inflate方法两个参数和三个参数的区别

    本文转载自[http://blog.csdn.net/u012702547/article/details/52628453] 关于inflate参数问题,我想很多人多多少少都了解一点,网上也有很多关 ...

最新文章

  1. “社区之星”成长故事征集
  2. 汇编语言介绍,内存和总线的初步认识
  3. Java多线程详解[狂神说Java]
  4. 蓝桥杯_算法训练_关联矩阵
  5. java与C++实现判断闰年(百练OJ:2733:判断闰年)
  6. fortran subroutine_Fortran:派生数组与数组传递进子程序耗费时间比较
  7. AlarmManager类的应用(实现闹钟功能)
  8. 编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s
  9. Vue is not defined;at App onLaunch function;at api getSystemInfo success callback function
  10. linux下刻录光盘读取不了_Linux下刻录光盘实战
  11. 力扣题目——997. 找到小镇的法官
  12. Jmeter安装TPS插件
  13. 小米手机访问电脑共享文件_详细方法步骤教你如何解决小米电视访问电脑共享资源!...
  14. vue项目接入高拍仪
  15. MPP架构、常见OLAP引擎分析
  16. 困扰了很久的ubuntu下智能拼音输入法
  17. PHP学习笔记——图形图像
  18. Apple 设备尺寸
  19. 图解Linux命令之--modprobe命令
  20. 科目三考试经验与技巧——长春长德科目三考场

热门文章

  1. (转载)关于IAP与APP互相跳转的实现
  2. 教你使用stm32接收串口的一帧数据!
  3. 双曲线和直线联立公式_高中圆锥曲线解题技巧之齐次化联立(四)
  4. python 语言教程(3)变量之字符串
  5. 广东省老龄化预测及影响因素分析
  6. python——全局变量和局部变量
  7. optee中添加一个中断以及底层代码的相关解读
  8. optee:kernel space调用user space进程时候的硬件行为
  9. 广西2021各校高考成绩查询入口,2021年广西高考成绩排名查询系统,广西高考位次排名查询...
  10. WIN10+MinGW中文输出乱码的解决方法