精华内容
参与话题
问答
  • inflate

    2018-08-03 18:34:29
    LayoutInflater.from(context).inflate(R.layout.order_layout,parent,false) 用inflate加载布局的时候,布局中最外层的布局是没有用的

    LayoutInflater.from(context).inflate(R.layout.order_layout,parent,false)
    用inflate加载布局的时候,布局中最外层的布局是没有用的

    展开全文
  • Inflate

    2016-12-19 18:50:11
    我们最常用的便是LayoutInflater的inflate方法,这个方法重载了四种调用方式,分别为: 1. public View inflate(int resource, ViewGroup root) 2. public View inflate(int resource, ViewGroup root, boolean ...
    我们最常用的便是LayoutInflater的inflate方法,这个方法重载了四种调用方式,分别为:
    1. public View inflate(int resource, ViewGroup root)
    2. public View inflate(int resource, ViewGroup root, boolean attachToRoot)
    3.public View inflate(XmlPullParser parser, ViewGroup root)
    4.public View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot)

    这四种使用方式中,我们最常用的是第一种方式,inflate方法的主要作用就是将xml转换成一个View对象,用于动态的创建布局。虽然重载了四个方法,但是这四种方法最终调用的,还是第四种方式。第四种方式也很好理解,内部实现原理就是利用Pull解析器,对Xml文件进行解析,然后返回View对象。

    inflate方法有三个参数,分别是
    1.resource 布局的资源id

    2.root 填充的根视图

    3.attachToRoot 是否将载入的视图绑定到根视图中

    首先,方式一的源代码实现
    public View inflate(XmlPullParser parser, ViewGroup root) {
            return inflate(parser, root, root != null);
        }
    

    当我们使用方式一,并且第二个参数传入null的时候,默认调用的是下面的方法,并且attachToRoot是false
    public View inflate(int resource, ViewGroup root, boolean attachToRoot) {
            if (DEBUG) System.out.println("INFLATING from resource: " + resource);
            XmlResourceParser parser = getContext().getResources().getLayout(resource);
            try {
                return inflate(parser, root, attachToRoot);
            } finally {
                parser.close();
            }
        }
    
    在这一个方法中,pull解析器将资源id转化成XmlResourceParser对象,又传给了第四种方式,所以我们需要重点看的还是第四种方式是如何实现的
    if (root != null) {
                            if (DEBUG) {
                                System.out.println("Creating params from root: " +
                                        root);
                            }
                            // Create layout params that match root, if supplied
                            params = root.generateLayoutParams(attrs);
                            if (!attachToRoot) {
                                // Set the layout params for temp if we are not
                                // attaching. (If we are, we use addView, below)
                                temp.setLayoutParams(params);
                            }
                        }
    
    这些代码的意思就是,当我们传进来的root参数不是空的时候,并且attachToRoot是false的时候,也就是上面的TwoActivity的实现方式的时候,会给temp设置一个LayoutParams参数。

    若我们采用convertView = inflater.inflate(R.layout.item_list,null);方式填充视图,item布局中的根视图的layout_XX属性会被忽略掉,然后设置成默认的包裹内容方式.
    如果我们想保证item的视图中的参数不被改变,我们需要使用convertView = inflater.inflate(R.layout.item_list, parent,false);这种方式进行视图的填充
    除了使用这种方式,我们还可以设置item布局的根视图为包裹内容,然后设置内部控件的高度等属性,这样就不会修改显示方式了。



    展开全文
  • inflate方法

    2019-10-14 08:43:33
    LayoutInflater的inflate方法重载了四种调用方式,分别为: public View inflate(int resource, ViewGroup root) public View inflate(int resource, ViewGroup root, boolean attachToRoot) public View inflate...

    LayoutInflater的inflate方法重载了四种调用方式,分别为:

    public View inflate(int resource, ViewGroup root)
    public View inflate(int resource, ViewGroup root, boolean attachToRoot)
    public View inflate(XmlPullParser parser, ViewGroup root)
    public View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot)

    参数attachToRoot, 是否将载入的视图绑定到根视图中,即是否把选取的视图加入到root中。false 的意思就是不添加到root中。可能需要我们手动添加。
    Whether the inflated hierarchy should be attached to the root parameter? If false, root is only used to create the correct subclass of LayoutParams for the root view in the XML.

    inflate()常用方法为:

    1.View.inflate(mContext, R.layout.xxx_layout, null);
    2.LayoutInflater.from(mContext).inflate(R.layout.xxx_layout, null);        
    3.LayoutInflater.from(mContext).inflate(R.layout.xxx_layout, parent, false);

    1调用2,2调用3。2和3的区别主要在:采用方式2填充视图,item布局中的根视图的layout_xxx属性会被忽略掉,然后设置成默认的包裹内容方式,如果我们想保证item的视图中的参数不被改变,我们需要方式3进行视图的填充。或者设置item布局的根视图为包裹内容,然后设置内部控件的高度等属性,这样用方式2填充视图就ok了。

    推荐使用方式3!

    参考:

    inflate方法两个参数和三个参数的区别

    关于inflate的第3个参数

    展开全文
  • Android inflate 方法理解

    2017-09-23 16:28:38
    inflate

    方法原型:

    1. 两个参数:inflate(int resource, ViewGroup root)
    2. 三个参数:inflate(int resource, ViewGroup root, boolean attachToRoot)

    方法1内部调用方法2

    a. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义,加载的布局文件最外层的所有layout属性会失效,由父布局来重新指定.

    b. 如果root不为null,attachToRoot不论是true或false,加载的布局文件最外层的所有layout属性都有效,唯一的不同是:
    attachToRoot为true时,会自动调用root.addView(view, params),最后返回root;
    attachToRoot为false时,会返回view,需手动调用root.addView(view, params).

    c. 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true.

    参考链接:

    Android LayoutInflater原理分析,带你一步步深入了解View(一)

    Android下LayoutInflater的正确使用姿势

    展开全文
  • android inflate demo,方便新手使用,下载导入android studio就可直接运行,简单明了的展现inflate不同参数的区别
  • Inflate XML.

    2021-01-01 17:48:39
    <div><p>Hello,Your demo application of cover flow really different from other and its same as i-phone gallery.Thanks to post this helpful code.Now i tried to inflate XML file but i cant achieved.Help ...
  • matlab开发-Inflate

    2019-08-27 23:00:05
    matlab开发-Inflate。使用bls.gov的CPI通货膨胀计算器调整通货膨胀。
  • 安卓inflate

    2018-08-11 23:41:33
    public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) 一、root不为null ①root不为null,attachToRoot为true layoutRes自动添加到root布局中 ...
  • Improved streaming inflate

    2021-01-08 14:19:39
    s therefore not possible to know upfront how many bytes to send to inflate, instead it relies on inflating knowing when it has received the last byte: <pre><code>js function write(byte) { b[0] = ...
  • inflate浅析

    2016-02-04 16:06:22
    2.inflate()动态加载,生成一个View类的对象,有需要时再进行显示。 那么inflate()该怎么使用呢? inflate()是类LayoutInflater的方法,所以得先生成LayoutInflater的对象。 1.生成类LayoutI
  • <div><h3>What was the end-user problem that led to this PR?...<p>Replace <code>Gem.inflate</code> to <code>Gem::Util.inflate</code></p>该提问来源于开源项目:rubygems/bundler</p></div>
  • Android inflate

    2016-03-08 10:04:07
    inflate()的作用就是将一个用xml定义的布局文件查找出来,注意与findViewById()的区别,inflate是加载一个布局文件,而findViewById则是从布局文件中查找一个控件。 1.获取LayoutInflater对象有三种方法 ...
  • View.inflate和LayoutInflater.inflate都是我们平时常用的方法,一直来回用也没有注意两者的区别,做一个列表让条目加上颜色的功能,使用View.inflate总是不能实现,于是找了下源码。 我们首先看一看View.inflate的...
  • https://www.cnblogs.com/baipengzhan/p/LayoutInflater_inflate_View_inflate.html
  • LayoutInflater类的inflate方法适用于所有需要进行布局填充的场景,是Android中专门进行布局填充的方法,Android中其他需要 使用布局填充的地方,都会调用本方法,而不是View类中的inflate方法。该方法不是静态方法...
  • LayoutInflater.inflate源码详解 LayoutInflater的inflate方法相信大家都不陌生,在Fragment的onCreateView中或者在BaseAdapter的getView方法中我们都会经常用这个方法来实例化出我们需要的View. 假设我们有一个...
  • inflate参数释义

    2017-07-07 11:49:43
    inflate参数释义
  • (补充一下:inflate原意是膨胀,在安卓中应该是扩展)它与findViewById()方法的区别是: 前者找的是布局文件, 后者找的是布局文件里的控件。LayoutInflater类inflate(int resource, ViewGroup root, boolean att
  • View inflate 原理

    2019-08-27 10:18:43
    View view = inflater.inflate(R.layout.fragment_main, container, false); 或者 View view = inflater.inflate(R.layout.dialog_kp_user_product_item, null); 两个方法,但是不知道其有什么区别?如果搞错了...
  • inflate使用方法总结

    2020-07-06 17:36:02
    inflater.inflate(R.layout.layout_inflate_test,null); inflater.inflate(R.layout.layout_inflate_test, root,false); inflater.inflate(R.layout.layout_inflate_test, root,true); 在android加载布局中,...
  • 在用代码inflate一个XML布局文件添加到父容器时,偶尔会碰到这个inflate出来的view,会无法正确显示我们在xml中所定义的样子,比如可能会无法正确显示最外层定义的参数,width,height,padding,margin等等。...

空空如也

1 2 3 4 5 ... 20
收藏数 8,721
精华内容 3,488
关键字:

inflate