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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hostapd配置解析「建议收藏」

    hostapd配置解析「建议收藏」转载自:老丁的Linux:http://laoding.blog.51cto.com/980622/1697015hostapd的配置文件位于/etc/hostapd/hostapd.conf。interface=wlp2s0#bridge=br0driver=nl80211logger_syslog=-1logger_syslog_level=2logger_stdou…

    2022年5月21日
  • Javascript作用域问题的构造函数的变量

    Javascript作用域问题的构造函数的变量

    2022年1月4日
  • facets学习(1):什么是facets

    facets学习(1):什么是facetsML数据集可以包含数亿个数据点,每个数据点由数百(甚至数千)的特征组成,几乎不可能以直观的方式了解整个数据集。为帮助理解、分析和调试ML数据集,谷歌开源了Facets,一款可视化工具。Fac

    2022年8月4日
  • 数据库的唯一索引_数据库唯一索引是什么

    数据库的唯一索引_数据库唯一索引是什么唯一索引是不允许表中任何两行具有相同索引值的索引。  当现有的数据中存在重复的键值时,大多数数据库不允许把新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。主键索引数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键

    2022年9月19日
  • ACM之Java输入输出[通俗易懂]

    ACM之Java输入输出[通俗易懂]一、Java之ACM注意点1. 类名称必须采用public class Main方式命名2. 在有些OJ系统上,即便是输出的末尾多了一个“ ”,程序可能会输出错误,所以在我看来好多OJ系统做的是非常之垃圾3. 有些OJ上的题目会直接将OI上的题目拷贝过来,所以即便是题目中有输入和输出文件,可能也不需要,因为在OJ系统中一般是采用标准输入输出,不需要文件4. 在有多行数据输入的情况下

    2022年5月9日
  • 博客数据库被删,丢失部分数据!

    博客数据库被删,丢失部分数据!

    2021年8月11日

发表回复

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

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