zoukankan      html  css  js  c++  java
  • 布局加载的方法以及参数说明

    布局加载的方式:

    listview中适配器getView方法里获取获取布局控件的方法:

    //第一种--获得布局加载器
    LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = layoutInflater.inflate(R.layout.listview_item_city, null);


    //第二种
    LayoutInflater layoutInflater2 = LayoutInflater.from(MainActivity.this);
    View view = layoutInflater2.inflate(R.layout.listview_item_city, null);


    //第三种
    LayoutInflater layoutInflater = MainActivity.this.getLayoutInflater();
    View view = layoutInflater.inflate(R.layout.listview_item_city, null);


    //第四种
    View view = View.inflate(MainActivity.this, R.layout.listview_item_city, null);

    第四种与第二种基本相同,第四种方式的内部使用的是第二种

    View.inflate(MainActivity.this, R.layout.listview_item_city, null) = LayoutInflater.from(MainActivity.this).inflate(R.layout.listview_item_city, null)

    而第二种与第一种基本相同

    LayoutInflater.from(MainActivity.this).inflate(R.layout.listview_item_city, null) = 

    (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE).inflate(R.layout.listview_item_city, null)

    LayoutInflater的使用:

       LayoutInflater的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如  Button、TextView等)。

     具体作用:

     1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;

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

    参数说明:
      LayoutInflater.from(MainActivity.this).inflate(int Resource, ViewGroup parent,boolean attachToRoot);

    参数一:资源id  参数二:加载view布局的父布局(例如,listview)  参数三:是否添加到父布局

    parent为null: attachToRoot不管设置为什么值,都是没有用的,同时这个布局的最外层参数就没有效了

    parent不为null:

      attachToRoot为false,表示不加载父布局,返回的是当前view视图的布局

      attachToRoot为true,表示加载父布局,返回的是包含所有view视图的父布局 

      其实View必须存在于一个父布局中,这样layout_width和layout_height才会有效,因为这两个参数是相对于父布局中的宽高

    所以:inflate(int resource, ViewGroup root, boolean attachToRoot)的第二个参数不为空,resource的最外层布局参数才会有效,否则就无效了

     

  • 相关阅读:
    java 字节流与字符流的区别
    什么是缓冲区
    java流输入输出
    Apache安装配置
    Maven学习
    Redis
    数据结构与算法
    pig ERROR 2997: Encountered IOException. File or directory null does not exist.
    hadoop学习路线(转)
    86标准SQL与92标准SQL用法区别
  • 原文地址:https://www.cnblogs.com/fangg/p/5916043.html
Copyright © 2011-2022 走看看