zoukankan      html  css  js  c++  java
  • LayoutInflater的inflate函数用法详解

     

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

    获取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);
        }
    }
    

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

    区别:
    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函数类似。

  • 相关阅读:
    Linq to OBJECT延时标准查询操作符
    LINQ to XML
    动态Linq(结合反射)
    HDU 1242 dFS 找目标最短路
    HDu1241 DFS搜索
    hdu 1224 最长路
    BOJ 2773 第K个与m互质的数
    ZOJ 2562 反素数
    2016 ccpc 杭州赛区的总结
    bfs UESTC 381 Knight and Rook
  • 原文地址:https://www.cnblogs.com/chuiyuan/p/4079485.html
Copyright © 2011-2022 走看看