android之LayoutInflater详解_什么是LayoutInflater

作用:LayoutInflater作用是将layout的xml布局文件实例化为View类对象 对于常见的一个已经载入的Activity, 我们可以使用findViewById方法来获得其中的界面元素. 而对于一个没有被载入或者想要动态载入的界面, 就需要使用inflate来载入了. 方法:    Android里面想要创建一个画面的时候, 初学一般都是新建一个类, 继承Acti

大家好,又见面了,我是全栈君。


 
作用:LayoutInflater作用是将layout的xml布局文件实例化为View类对象 



对于常见的一个已经载入的Activity, 我们可以使用findViewById方法来获得其中的界面元素. 而对于一个没有被载入或者想要动态载入的界面, 就需要使用inflate来载入了. 

方法: 
   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)。
android之LayoutInflater详解_什么是LayoutInflater

代码如下:
package com.jason;


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://javaforall.net/121467.html原文链接:https://javaforall.net

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


相关推荐

  • c语言读取bmp图像_opencv 图像处理

    c语言读取bmp图像_opencv 图像处理以前都是使C语言中File*、fopen、fread等操作文件,这几天学习了C++IO标准库,就应用来读取bmp图像。

    2026年1月22日
    3
  • 海量视频资源【网盘直接取】

    海量视频资源【网盘直接取】资源分享资源均来源于网络,在自学/开公众号的时候收集而来。如果侵权请联系我,会第一时间删除。如果链接已失效(我也无办法,很多链接我是没有保存在自已的网盘中的,见谅)。如果…

    2022年5月22日
    80
  • 边界值分析法用例设计

    边界值分析法用例设计根据大量的测试统计数据 很多错误是发生在输入或输出范围的边界上 而不是发生在输入 输出范围的中间区域 因此针对各种边界情况设计测试用例 可以查出更多的错误 具有很强的发现故障缺陷能力 所谓边界值 是指相对于输入等价类和输出等价类而言 稍高于其最高值或稍低于最低值的一些特定情况 边界值分析是一种常用的黑盒测试方法 是对等价类划分方法的补充 1 边界的类型边界的类型包括数值 速度 字符 地址 位置 尺寸 数量 空间等 考虑这些数据类型的下述特征 第一个和最后一个 最小值和最大值 开始

    2025年11月5日
    5
  • 思科下一代模拟器EVE-NG安装

    思科下一代模拟器EVE-NG安装思科模拟器最早10年前接触过CiscoPacketTracer,后来发展的GNS3,不过一直只支持思科的设备,而EVE最近几年开始火了起来,不仅支持思科设备,而且支持众多的华为,山石等国产设备。EVE-NG官网:https://www.eve-ng.net/EVE-NG官网下载页:Download下载其中的社区版OVA和window客户端即可官方的下载连接如下社区版的OVF文件https://mega.nz/file/qlt3zK7Q#LZdFhSxJPCpd4-QNyu5U6ia

    2022年6月3日
    82
  • 左值和右值、左值引用与右值引用、移动语句(2)「建议收藏」

    以下来自IBM知识中心表达式可以分为以下值类别之一:左值Lvalue:如果表达式不是const限定的,则表达式可以出现在赋值表达式的左侧。 x值:要过期的右值引用。 右值(Prvalue)rvalue:非xvalue表达式,仅出现在赋值表达式的右侧。Rvalues包括xvalues和prvalues。Lvalues和xvalues可以称为glvalues。Note:类(p…

    2022年4月8日
    51
  • java事务回滚案例_java事务控制

    java事务回滚案例_java事务控制疑问,确实像往常一样在service上添加了注解 @Transactional,为什么查询数据库时还是发现有数据不一致的情况,想想肯定是事务没起作用,出现异常的时候数据没有回滚。于是就对相关代码进行了一番测试,结果发现一下踩进了两个坑,确实是事务未回滚导致的数据不一致。下面总结一下经验教训:Spring事务的管理操作方法编程式的事务管理实际应用中很少使用通过

    2022年8月30日
    7

发表回复

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

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