LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
区别:
setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来。一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要LayoutInflater动态加载。
public View inflate(int Resourece,ViewGroup root)
作用:填充一个新的视图层次结构从指定的XML资源文件中
reSource:View的layout的ID
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 ); |
一直有点纠结setContentView和inflate的区别找了一些资料。写了个小程序看了下:
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); } } |
上述注释掉的代码和没有注释掉的代码两种情况是相同的。
相关推荐
当调用`inflate()`方法时,LayoutInflater会解析XML布局文件,根据节点信息创建对应的View,并设置相应的属性。这个过程涉及到了`createView()`方法,它会创建一个View对象。为了支持从XML中解析属性,每个自定义...
` 这种方式直接在Activity中调用,实际上是通过PhoneWindow间接获取的,PhoneWindow的构造函数中调用了`LayoutInflater.from(context)`。 2. `LayoutInflater localInflater = (LayoutInflater) context....
以上就是关于Android中`Toast`的使用详解,包括基础用法、自定义布局、位置调整、动画效果、多行显示以及线程安全和延迟显示等多个方面。理解并熟练掌握这些技巧,将使你的Android应用交互更加友好和个性化。
在本教程中,我们将深入探讨如何使用`Toast`,包括其基本用法、自定义`Toast`以及一些实用技巧。本文将主要针对Android开发者,尤其是初级和中级水平的开发者,帮助你们提升对`Toast`的理解和应用能力。 ### 1. ...
8. **Java代码中使用**:在Java代码中,可以通过`new CalendarView(this)`或者`LayoutInflater.from(this).inflate(R.layout.custom_calendar_view, parent, false)`等方式创建并添加到父视图中。 自定义日历控件的...
在`onCreateView`方法中,你可以使用LayoutInflater加载自定义的XML布局文件,然后设置Dialog的内容。 为了使Dialog与主题和风格保持一致,可以使用Android的主题系统。在`styles.xml`文件中定义一个Dialog主题: ...
2. 在Java代码中,通过`LayoutInflater.from(context).inflate(R.layout.custom_dialog, null)`加载这个布局文件,将其转换为View对象。 3. 使用`AlertDialog.Builder`的`setView()`方法,将自定义的View添加到...
下面我们将深入探讨BaseAdapter的使用方法和关键知识点。 **1. 数据结构** 在使用BaseAdapter时,你需要为你的数据创建一个适配的数据结构。这通常是一个包含所需字段的Java类,例如: ```java public class ...
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则是Google为Kotlin开发者推出的一系列工具包,旨在简化Android开发...
然后在DialogFragment的onCreateDialog()方法中使用LayoutInflater加载这个布局文件: ```java @Override public Dialog onCreateDialog(Bundle savedInstanceState) { View view = LayoutInflater.from...
【ViewPager使用流程详解】 在Android应用开发中,ViewPager是一个常用组件,用于展示多个视图并实现平滑的左右滑动切换。以下是对ViewPager使用流程的详细解析: 1. **布局声明**: 在XML布局文件中,我们需要...
binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) } fun onButtonClick() { binding.button.setOnClickListener { /* 点击事件处理 */ } } } ``` **Android KTX** ...
### PopupWindow知识点详解 #### 一、PopupWindow简介 在Android开发中,`PopupWindow`是一种常见的用于显示临时性或辅助性信息的UI...理解和掌握`PopupWindow`的使用方法,对于提高应用程序的用户体验具有重要意义。
本篇文章将详细解读 `ArrayAdapter` 的核心API及其用法,帮助开发者更好地理解和运用这一组件。 ### 1. `ArrayAdapter` 概述 `ArrayAdapter` 是Android框架提供的一个通用适配器类,主要负责将数据集合中的数据项...
convertView = LayoutInflater.from(context).inflate(R.layout.main_item, parent, false); // 初始化内嵌ListView ListView innerListView = (ListView) convertView.findViewById(R.id.inner_list); ...
convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false); holder = new ViewHolder(); holder.textView = (TextView) convertView.findViewById(R.id.text_view); holder....
View customView = LayoutInflater.from(context).inflate(R.layout.custom_tab, null); // 设置自定义视图内容,如TextView和ImageView tab.setCustomView(customView); tabLayout.addTab(tab); } ``` 同时,...
convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false); holder = new ViewHolder(); holder.text = (TextView) convertView.findViewById(R.id.text); convertView.setTag...