`
bat0906
  • 浏览: 27959 次
  • 性别: Icon_minigender_1
  • 来自: 第九天堂
社区版块
存档分类
最新评论

LayoutInflater的inflate函数用法详解

 
阅读更多

LayoutInflater作用是将layoutxml布局文件实例化为View类对象。

 

区别:
setContentView()
一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来。一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要LayoutInflater动态加载。

public View inflate(int Resourece,ViewGroup root)
作用:填充一个新的视图层次结构从指定的
XML资源文件中
reSource
ViewlayoutID
root
 生成的层次结构的根视图
return 
填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。

其余几个重载的inflate函数类似。

 

获取LayoutInflater的方法有如下三种:

LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.main, null);
 
LayoutInflater inflater = LayoutInflater.from(context); (该方法实质就是第一种方法,可参考源代码)
View layout = inflater.inflate(R.layout.main, null);
 
LayoutInflater inflater = getLayoutInflater();(在Activity中可以使用,实际上是View子类下window的一个函数)
View layout = inflater.inflate(R.layout.main, null);

一直有点纠结setContentViewinflate的区别找了一些资料。写了个小程序看了下:

public class MyInflate extends Activity{
    private TextView tv;
    public void OnCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        //tv = (TextView) findViewById(R.id.tv);
 
        LayoutInflater inflate = LayoutInflater.from(this);
        View view = inflate.inflate(R.layout.main,null);
        setContentView(view);
    }
}

上述注释掉的代码和没有注释掉的代码两种情况是相同的。

 

 

 

 

分享到:
评论

相关推荐

    Android LayoutInflater加载布局详解及实例代码

    当调用`inflate()`方法时,LayoutInflater会解析XML布局文件,根据节点信息创建对应的View,并设置相应的属性。这个过程涉及到了`createView()`方法,它会创建一个View对象。为了支持从XML中解析属性,每个自定义...

    Android getViewById和getLayoutInflater().inflate()的详解及比较

    ` 这种方式直接在Activity中调用,实际上是通过PhoneWindow间接获取的,PhoneWindow的构造函数中调用了`LayoutInflater.from(context)`。 2. `LayoutInflater localInflater = (LayoutInflater) context....

    Toast用法详解(各种自定义Toast)实例

    以上就是关于Android中`Toast`的使用详解,包括基础用法、自定义布局、位置调整、动画效果、多行显示以及线程安全和延迟显示等多个方面。理解并熟练掌握这些技巧,将使你的Android应用交互更加友好和个性化。

    自定义吐司以及Toast的各种用法,详解。教你学会使用各种各样的Toast

    在本教程中,我们将深入探讨如何使用`Toast`,包括其基本用法、自定义`Toast`以及一些实用技巧。本文将主要针对Android开发者,尤其是初级和中级水平的开发者,帮助你们提升对`Toast`的理解和应用能力。 ### 1. ...

    Android自定义日历控件实例详解

    8. **Java代码中使用**:在Java代码中,可以通过`new CalendarView(this)`或者`LayoutInflater.from(this).inflate(R.layout.custom_calendar_view, parent, false)`等方式创建并添加到父视图中。 自定义日历控件的...

    Android Dialog使用详解

    在`onCreateView`方法中,你可以使用LayoutInflater加载自定义的XML布局文件,然后设置Dialog的内容。 为了使Dialog与主题和风格保持一致,可以使用Android的主题系统。在`styles.xml`文件中定义一个Dialog主题: ...

    《详解Dialog 三 自定义对话框视图及参数传递》源码

    2. 在Java代码中,通过`LayoutInflater.from(context).inflate(R.layout.custom_dialog, null)`加载这个布局文件,将其转换为View对象。 3. 使用`AlertDialog.Builder`的`setView()`方法,将自定义的View添加到...

    BaseAadpter详解

    下面我们将深入探讨BaseAdapter的使用方法和关键知识点。 **1. 数据结构** 在使用BaseAdapter时,你需要为你的数据创建一个适配的数据结构。这通常是一个包含所需字段的Java类,例如: ```java public class ...

    android ListView初级到高级详解

    convertView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false); viewHolder.image = convertView.findViewById(R.id.item_image); viewHolder.text = convertView.findViewById(R....

    android kotlin ktx包

    **Android Kotlin KTX扩展包详解** 在Android开发中,Kotlin是一种被广泛采用的现代编程语言,它提供了简洁、安全的语法以及丰富的语言特性。KTX则是Google为Kotlin开发者推出的一系列工具包,旨在简化Android开发...

    详解Android应用中DialogFragment的基本用法

    然后在DialogFragment的onCreateDialog()方法中使用LayoutInflater加载这个布局文件: ```java @Override public Dialog onCreateDialog(Bundle savedInstanceState) { View view = LayoutInflater.from...

    ViewPager使用流程笔记

    【ViewPager使用流程详解】 在Android应用开发中,ViewPager是一个常用组件,用于展示多个视图并实现平滑的左右滑动切换。以下是对ViewPager使用流程的详细解析: 1. **布局声明**: 在XML布局文件中,我们需要...

    butterknife,《注释》杂志.zip

    binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) } fun onButtonClick() { binding.button.setOnClickListener { /* 点击事件处理 */ } } } ``` **Android KTX** ...

    PopupWindow

    ### PopupWindow知识点详解 #### 一、PopupWindow简介 在Android开发中,`PopupWindow`是一种常见的用于显示临时性或辅助性信息的UI...理解和掌握`PopupWindow`的使用方法,对于提高应用程序的用户体验具有重要意义。

    ArrayAdapter API

    本篇文章将详细解读 `ArrayAdapter` 的核心API及其用法,帮助开发者更好地理解和运用这一组件。 ### 1. `ArrayAdapter` 概述 `ArrayAdapter` 是Android框架提供的一个通用适配器类,主要负责将数据集合中的数据项...

    listview嵌套listview

    convertView = LayoutInflater.from(context).inflate(R.layout.main_item, parent, false); // 初始化内嵌ListView ListView innerListView = (ListView) convertView.findViewById(R.id.inner_list); ...

    ListView 适配器超省写法

    convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false); holder = new ViewHolder(); holder.textView = (TextView) convertView.findViewById(R.id.text_view); holder....

    EasyNavigation.rar

    View customView = LayoutInflater.from(context).inflate(R.layout.custom_tab, null); // 设置自定义视图内容,如TextView和ImageView tab.setCustomView(customView); tabLayout.addTab(tab); } ``` 同时,...

    AndroidAPI

    - **重要知识点**:ContentProvider、BroadcastReceiver的使用方法。 - **示例代码**: ```java Intent intent = new Intent("com.example.ACTION"); sendBroadcast(intent); ``` 5. **`android.media`**:这...

    android 内存泄漏 摘抄

    convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false); holder = new ViewHolder(); holder.text = (TextView) convertView.findViewById(R.id.text); convertView.setTag...

Global site tag (gtag.js) - Google Analytics