1 inflate 和setContentView 区别
1) inflate 只是加载xml到内存中,不会显示到窗口,如果需要显示需要调用 setContentView(view);,未显示之前可以调用相应的方法对View进行修改
2) setContentView 如果调用了则View会直接显示到面板上
2 几个inflate方法的理解
1) view = getLayoutInflater().inflate(R.layout.activity_fragment31 ,null );
虽然activity_fragment31的高度只有200dp但是显示的时候整个布局会显示到整个Activity ,因为ViewGroup root 为空 ,所以test视图会设置到activity上 ,则取得当前window的layoutparam赋值给test视图也就充满了屏幕,
2) view = getLayoutInflater().inflate(R.layout.activity_fragment31, (ViewGroup) view,false );
同上activity_fragment31会充满整个屏幕, 理由同上
3)view = getLayoutInflater().inflate(R.layout.activity_fragment31, (ViewGroup) view,true );
这个activity_fragment31高度会显示为200dp ,test视图保存到了textView下面,并且保留了其自己的layoutparam参数
三、方法中3个参数的理解
resource:需要加载布局文件的id,意思是需要将这个布局文件中加载到Activity中来操作。
root:需要附加到resource资源文件的根控件,什么意思呢,就是inflate()会返回一个View对象,
如果第三个参数attachToRoot为true,将xml挂在root上,将root作为根对象返回,
attachToRoot为false:root对象的LayoutParams属性附加到resource对象的根布局对象上,然后返回该xml
1 先放上代码
public class Fragment3TestActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View view = (LinearLayout) getLayoutInflater().inflate(R.layout.activity_fragment3, null); // view = getLayoutInflater().inflate(R.layout.activity_fragment31 ,null ); // view = getLayoutInflater().inflate(R.layout.activity_fragment31, (ViewGroup) view,false ); view = getLayoutInflater().inflate(R.layout.activity_fragment31, (ViewGroup) view,true ); setContentView(view); } }
2 activity_fragment3.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff0000" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center" android:text="hello world" /> </LinearLayout>
3 activity_fragment31.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="200dp" android:background="#ffffff00" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center" android:text="test" /> </LinearLayout>
相关推荐
总的来说,这个"LayoutInflater inflate 示例demo"是一个很好的学习资源,它将帮助你深入理解Android中布局动态加载的过程,以及如何根据需要有效地使用`LayoutInflater`。通过实践,你将能够熟练掌握这一关键的...
本篇文章将深入探讨`LayoutInflater`的`inflate`方法之间的区别,帮助开发者更好地理解和利用这个强大的功能。 首先,`LayoutInflater`有两个主要的`inflate`方法: 1. `inflate(@LayoutRes int resource, ...
`inflate()` 方法是`LayoutInflater` 的核心功能,用于将XML布局资源动态地加载到活动中。下面将详细解释`LayoutInflater` 及其`inflate()` 方法的工作原理,以及如何在实际应用中灵活使用它们。 `LayoutInflater` ...
Android 中LayoutInflater.inflate()方法的介绍 Android 中LayoutInflater.inflate()方法是Android开发中最常用的方法之一,用于将布局文件转换成View对象。该方法是LayoutInflater类中的一个成员方法,主要用于将...
在Android开发中,`LayoutInflater.from(context).inflate()`方法是一个至关重要的组件,用于将XML布局文件转换为视图对象并添加到视图层次结构中。这个方法广泛应用于动态加载和构建用户界面,尤其在处理列表视图、...
`inflate()` 方法是`LayoutInflater` 的核心方法,它的作用是解析XML布局文件,并将其转换为Android视图层次结构。下面将详细阐述`inflate()` 方法的用法及其与其他方法的区别。 首先,`inflate()` 方法的基本使用...
博客《ListView滑动删除实现之一——merge标签与LayoutInflater.inflate()》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/45155965
Android LayoutInflater.inflate...我尝试在Google官方文档与网络上其他讨论中寻找有关的说明,而后发现许多人不但不清楚LayoutInflater的inflate()方法的细节,而且甚至在误用它。 这里的困惑很大程度上是因为Google
`LayoutInflater.inflate()` 方法是我们经常使用的一个核心方法,尤其是在创建自定义Adapter或动态加载布局时。接下来我们将深入探讨`LayoutInflater.inflate()` 的源码,以理解其工作原理和不同参数版本之间的差异...
`LayoutInflater`的核心是`inflate()`方法,它解析XML布局文件,并使用`createView()`创建对应的视图对象。在嵌套的情况下,`inflate()`会递归地处理XML中包含的子视图,包括其他`LayoutInflater`实例。 最后,`...
`inflate`方法是`LayoutInflater`类的核心功能,它接收三个参数:布局资源ID、父视图以及一个布尔值表示是否将新创建的视图附加到父视图。以下是`inflate`的基本用法: ```java LayoutInflater inflater = ...
在这种情况下,`LayoutInflater`会调用自定义视图的`inflate()`方法,让开发者有机会在加载时进行额外的初始化工作。 6. **性能优化**:为了提高性能,`LayoutInflater`支持缓存已解析过的布局。通过复用`...
通过深入学习`LayoutInflater`的源码,开发者可以更好地理解和定制其行为,以满足特定的应用需求。如果你希望了解更多关于`LayoutInflater`的细节,建议阅读博客文章(链接已给出),该文章可能会涵盖更多实用示例和...
LayoutInflater 的inflate 方法共有四种形式,目的都是把 xml 表述的 layout 转化为 View 对象。其中一个比较常用的是: ```java View inflate(int resource, ViewGroup root) ``` 其中,int resource 是 resource...
LayoutInflater 的 inflate 方法是加载 View 最常用的方法,将一个布局文件 ID 传入并最后解析成一个 View。inflate 方法有多种重载形式: * View inflate(@LayoutRes int resource, @Nullable ViewGroup root) * ...
这个方法内部调用了`LayoutInflater.from(context).inflate(resource, root)`,因此实质上也是前两种方法的封装。 现在我们深入理解这些方法的源码实现: `LayoutInflater.from(context)`的源码如下: ```java ...