作用: 
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();
}
}

最新文章

  1. WEB页面中常见的四种控件的必须的测试
  2. java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化
  3. MFC窗口乱弹问题
  4. jquery总结
  5. python之网络爬虫
  6. YII2.0上传文件
  7. C/C++ 内联函数
  8. Watson Explorer Analytical Components 1
  9. Java中Lock,tryLock,lockInterruptibly的区别
  10. codeforces 887A Div. 64 思维 模拟
  11. HTML和CSS前端基础
  12. Jenkins高级用法 - Pipeline 安装
  13. 一套代码小程序&Web&Native运行的探索06——组件系统
  14. SQL Server - group by
  15. VUE.js全局变量的定义
  16. HttpFilter
  17. jdk8-lambda表达式的使用
  18. win7 64位系统pdf预览
  19. Redis五大类型操作使用以及订阅发布功能
  20. JAVA读入挂

热门文章

  1. UVALive 7147 World Cup
  2. 时隔3年,再次折腾BlackBerry 8830!
  3. emWin(ucGUI)在PC机上模拟的按键响应多次解决办法 worldsing
  4. Android之旅 笔记总结(一)
  5. CodeForces 710A King Moves (水题)
  6. web/jdbc数据库带实例名连接2008
  7. junit4学习(Annotation)
  8. Android导入自定义的jar包时出现 E/AndroidRuntime(486): java.lang.NoClassDefFoundError错误
  9. Function.caller
  10. Thread message loop for a thread with a hidden window? Make AllocateHwnd safe