LayoutInflater和inflate()

Posted 四叶草幻想曲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LayoutInflater和inflate()相关的知识,希望对你有一定的参考价值。

LayoutInflater

    LayoutInflater抽象类是用来加载XML布局文件(UI界面)的.

作用:

1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()或View.inflate()来载入,然后也可以通过findByIdView()获取界面的元素;

2、对于一个已经通过setContentView()载入的界面,就可以使用findViewById()方法来获得其中的界面元素。

 

 

获得 LayoutInflater 实例的三种方式 (inflate()方法的作用看后面)

1. LayoutInflater inflater = getLayoutInflater();  //调用Activity的getLayoutInflater()

例:View view = getLayoutInflater().inflate(R.layout.Setting_view, null);//加载R.layout.Setting_view布局

 

2. LayoutInflater inflater =  (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view=inflater.inflate(R.layout.Setting_view, null);//加载R.layout.Setting_view布局

 

3. LayoutInflater inflater = LayoutInflater.from(context);  

例:View view = LayoutInflater.from(mContext).inflate(R.layout.Setting_view, null);//加载R.layout.Setting_view布局

 

 

View.inflate()方法

        View类和LayoutInflater类都有该方法。但两个类中的该方法作用是一样的,都是用来加载布局的。

        inflate()的作用是加载一个用XML定义的布局文件(UI界面),而后可以使用findViewById()查找该布局文件内的控件,

而直接使用findViewById则只能从主布局文件(setContentView(R.layout.activity_main)中的R.layout.activity_main布局文件)

中查找控件。

         用View.inflate()加载布局

 

       infalte()加载布局文件 
      View   v= View.inflate(this,R.layout.setting_view,null);
      textView = (TextView) v.findViewById(R.id.text);
      textView.setText("Hello");
  
R.layout.setting_view布局文件
<?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="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/text" android:textColor="@color/colorAccent" android:layout_gravity="center_horizontal"/> </LinearLayout>

参考:http://blog.csdn.net/lovexieyuan520/article/details/9036673

http://blog.csdn.net/it1039871366/article/details/9796965

深入了解:http://blog.csdn.net/guolin_blog/article/details/12921889

http://bxbxbai.github.io/2014/11/19/make-sense-of-layoutinflater/

 

以上是关于LayoutInflater和inflate()的主要内容,如果未能解决你的问题,请参考以下文章

LayoutInflater inflate LayoutParams 简介

转载《 LayoutInflater 的inflate函数用法详解》

LayoutInflater.inflate()之attachToRoot

LayoutInflater.inflate()方法的ViewGroup参数问题

LayoutInflater.inflate()方法的ViewGroup参数问题

LayoutInflater类的inflate方法中的第二个参数怎么用,Android