作用: 
1、对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入.

2、对于一个已经载入的Activity, 就可以使用实现了这个Activiyt的的findViewById方法来获得其中的界面元素.

方法: 
   Android里面想要创建一个画面的时候, 初学一般都是新建一个类, 继承Activity基类, 然后在onCreate里面使用setContentView方法来载入一个在xml里定义好的界面.

其实在Activity里面就使用了LayoutInflater来载入界面, 通过getSystemService(Context.LAYOUT_INFLATER_SERVICE)方法可以获得一个 LayoutInflater, 也可以通过LayoutInflater inflater = getLayoutInflater();来获得.然后使用inflate方法来载入layout的xml,

下面是一个简单的例子:
 
首先我们要知道,什么是已经被载入的layout,什么是还没有载入的.我们启动一个应用,与入口Activity相关的layout{常见的是main.xml}就是被载入的,即在Oncreate()中的.而其他的layout是没有被载入的.就要动态载入了或通过另一个activity.
 
在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById(),
不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件.
为了让大家容易理解我[转]做了一个简单的Demo,主布局main.xml里有一个TextView和一个Button,当点击Button,出现 Dialog,而这个Dialog的布局方式是我们在layout目录下定义的custom_dialog.xml文件(里面左右分布,左边 ImageView,右边TextView)。
代码如下:
package com.bivin;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
private Button button;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
showCustomDialog();
}
public void showCustomDialog() {
AlertDialog.Builder builder;
AlertDialog alertDialog;
Context mContext = MainActivity.this;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_dialog, null);
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Hello, Welcome to Mr Wei's blog!");
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.icon);
builder = new AlertDialog.Builder(mContext);
builder.setView(layout);
alertDialog = builder.create();
alertDialog.show();
}
}

转载于:https://www.cnblogs.com/raffeale/p/4564415.html

LayoutInflater作用及使用相关推荐

  1. LayoutInflater的inflate函数用法详解

    LayoutInflater的inflate函数用法详解 LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: ...

  2. LayoutInflater将layout的xml布局文件实例化为View对象

    LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: LayoutInflater inflater=(Layo ...

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

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

  4. Android学习之——ListView下拉刷新

    背景知识 ListView使用非常广泛,对于使用ListView的应用来说,下拉刷新是必不可少要实现的功能. 我们常用的微博.网易新闻,搜狐新闻都使用了这一功能,如下图所示.     微博 搜狐新闻 ...

  5. linux中的 bin sh,Linux-#!/bin/sh理解

    #!是一个特殊符号,/bin/sh是用来解释该脚本的的shell路径 #!/bin/sh指该脚本使用/bin/sh来执行 sh只是其中一种解释方式,通过如下命令可以查到支持的shell解释方式: xx ...

  6. python输入百分制成绩输出成绩等级_switch实现成绩打等级

    Minor[ PHP框架]5.事件 框架Github地址:github.com/Orlion/Minor (如果觉得还不错给个star哦(^-^)V) 框架作者: Orlion 知乎:https:// ...

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

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

  8. Android LayoutInflater.from(context).inflate()方法的作用

    前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家.

  9. Android中LayoutInflater的使用

    Inflater英文意思是膨胀,在Android中应该是扩展的意思吧. LayoutInflater 的作用类似于 findViewById(),不同点是LayoutInflater是用来找layou ...

最新文章

  1. 在创建ArcGIS Server10.5的站点时,系统提示创建‘System/publishingToolsEX.GPServer’失败(转)...
  2. taro 引入js_Taro跨端开发之多业务模块管理 React Native篇(终篇)
  3. flink mysql connector_Flink JDBC Connector:Flink 与数据库集成最佳实践
  4. HRESULT 的判断
  5. loadrunner脚本设计:参数化
  6. 6-6-3:STL之map和set——multiset和multimap及set和map在oj题中的用处
  7. div动态消失的动画效果
  8. QTableWidget插入项item方法 及误区
  9. C#中的模块化软件开发
  10. CentOS 使用yum update 更新时保留特定版本的软件
  11. Object类中的wait()和notify()
  12. 球体重量在线计算机,用图形计算器研究热气球.doc
  13. mysql五日均线_怎么设置五日均线?
  14. java中innerhtml_js中innerHTML与innerText的用法与区别 | 学步园
  15. 百度引流推广怎么做?个人如何做百度推广
  16. socket介绍--数据的编码与解码
  17. 带有数字化伪装外观,全新ID.7轿车即将全球首发
  18. openCV中二值化图像的方法
  19. 大学生申请软著的好处
  20. 听云server探针安装历程

热门文章

  1. mahout基于Hadoop的CF代码分析(转)
  2. 在 asp.net mvc中的简单分页算法 (续)
  3. iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
  4. oracle时间用法
  5. Spring.NET学习笔记(4)-对象作用域和类型转换
  6. JAVA基础知识(5)
  7. A Collection of 100+ Writing Task 2 Essays for IELTS
  8. bucket sort count sort
  9. 大量网课视频学习方法升级版!生命就是一往无前和永无止境的直播!
  10. 和中医学习到的养生方法和知识