`

LayoutInflater的inflate方法学习

 
阅读更多

 

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

    总的来说,这个"LayoutInflater inflate 示例demo"是一个很好的学习资源,它将帮助你深入理解Android中布局动态加载的过程,以及如何根据需要有效地使用`LayoutInflater`。通过实践,你将能够熟练掌握这一关键的...

    LayoutInflater源码分析 inflate方法的区别

    本篇文章将深入探讨`LayoutInflater`的`inflate`方法之间的区别,帮助开发者更好地理解和利用这个强大的功能。 首先,`LayoutInflater`有两个主要的`inflate`方法: 1. `inflate(@LayoutRes int resource, ...

    LayoutInflater inflate例子

    `inflate()` 方法是`LayoutInflater` 的核心功能,用于将XML布局资源动态地加载到活动中。下面将详细解释`LayoutInflater` 及其`inflate()` 方法的工作原理,以及如何在实际应用中灵活使用它们。 `LayoutInflater` ...

    Android 中LayoutInflater.inflate()方法的介绍

    Android 中LayoutInflater.inflate()方法的介绍 Android 中LayoutInflater.inflate()方法是Android开发中最常用的方法之一,用于将布局文件转换成View对象。该方法是LayoutInflater类中的一个成员方法,主要用于将...

    LayoutInflater.from(context).inflate()方法的调研

    在Android开发中,`LayoutInflater.from(context).inflate()`方法是一个至关重要的组件,用于将XML布局文件转换为视图对象并添加到视图层次结构中。这个方法广泛应用于动态加载和构建用户界面,尤其在处理列表视图、...

    Android LayoutInflater中 Inflate()方法应用

    `inflate()` 方法是`LayoutInflater` 的核心方法,它的作用是解析XML布局文件,并将其转换为Android视图层次结构。下面将详细阐述`inflate()` 方法的用法及其与其他方法的区别。 首先,`inflate()` 方法的基本使用...

    博客《ListView滑动删除实现之一——merge标签与LayoutInflater.inflate()》对应源码

    博客《ListView滑动删除实现之一——merge标签与LayoutInflater.inflate()》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/45155965

    Android LayoutInflater.inflate()详解及分析

    Android LayoutInflater.inflate...我尝试在Google官方文档与网络上其他讨论中寻找有关的说明,而后发现许多人不但不清楚LayoutInflater的inflate()方法的细节,而且甚至在误用它。 这里的困惑很大程度上是因为Google

    Android LayoutInflater.inflate源码分析

    `LayoutInflater.inflate()` 方法是我们经常使用的一个核心方法,尤其是在创建自定义Adapter或动态加载布局时。接下来我们将深入探讨`LayoutInflater.inflate()` 的源码,以理解其工作原理和不同参数版本之间的差异...

    layoutinflater中嵌套layoutinflater

    `LayoutInflater`的核心是`inflate()`方法,它解析XML布局文件,并使用`createView()`创建对应的视图对象。在嵌套的情况下,`inflate()`会递归地处理XML中包含的子视图,包括其他`LayoutInflater`实例。 最后,`...

    inflate的使用

    `inflate`方法是`LayoutInflater`类的核心功能,它接收三个参数:布局资源ID、父视图以及一个布尔值表示是否将新创建的视图附加到父视图。以下是`inflate`的基本用法: ```java LayoutInflater inflater = ...

    Android 中级应用 一 LayoutInflater 的使用

    在这种情况下,`LayoutInflater`会调用自定义视图的`inflate()`方法,让开发者有机会在加载时进行额外的初始化工作。 6. **性能优化**:为了提高性能,`LayoutInflater`支持缓存已解析过的布局。通过复用`...

    Android LayoutInflater的用法

    通过深入学习`LayoutInflater`的源码,开发者可以更好地理解和定制其行为,以满足特定的应用需求。如果你希望了解更多关于`LayoutInflater`的细节,建议阅读博客文章(链接已给出),该文章可能会涵盖更多实用示例和...

    LayoutInflater的使用

    LayoutInflater 的inflate 方法共有四种形式,目的都是把 xml 表述的 layout 转化为 View 对象。其中一个比较常用的是: ```java View inflate(int resource, ViewGroup root) ``` 其中,int resource 是 resource...

    Android布局加载之LayoutInflater示例详解

    LayoutInflater 的 inflate 方法是加载 View 最常用的方法,将一个布局文件 ID 传入并最后解析成一个 View。inflate 方法有多种重载形式: * View inflate(@LayoutRes int resource, @Nullable ViewGroup root) * ...

    Android开发之获取LayoutInflater对象的方法总结

    这个方法内部调用了`LayoutInflater.from(context).inflate(resource, root)`,因此实质上也是前两种方法的封装。 现在我们深入理解这些方法的源码实现: `LayoutInflater.from(context)`的源码如下: ```java ...

Global site tag (gtag.js) - Google Analytics