Android 中LayoutInflater.inflate()方法的介绍
最近一直想弄明白LayoutInflater对象的inflate方法的用法,今天做了实例。
<LinearLayout android:id="@+id/ll_item_Group" android:layout_width="match_parent" android:layout_height="200dp" android:background="#FF0000" android:orientation="vertical" > </LinearLayout>
itemGroup = (LinearLayout) findViewById(R.id.ll_item_Group);
这个作为itemGroup对象。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/view_content" android:layout_width="match_parent" android:layout_height="100dp" android:background="#4169E1" android:orientation="horizontal" > </LinearLayout> <RelativeLayout android:id="@+id/view_todo" android:layout_width="100dp" android:layout_height="match_parent" android:background="#00008B" > </RelativeLayout> </LinearLayout>
这个作为include引用的view。测试代码如下:(inflater是LayoutInflater对象的实例,获取方法是:inflater = LayoutInflater.from(this),其它两种方法自己百度)
View v1 = inflater.inflate(R.layout.el_include, null); View v3 = inflater.inflate(R.layout.el_include, itemGroup, false); View v2 = inflater.inflate(R.layout.el_include, itemGroup); View v4 = inflater.inflate(R.layout.el_include, itemGroup, true);
测试结果是:
1、V1和V3在Activity里显示效果一样,都是itemGroup原来的内容,V1和V3都是R.layout.el_include里的View对象。
2、V2和V4在Activity里显示效果一样,都是itemGroup添加R.layout.el_include里的内容之后的。V2和V4对象都是加了R.layout.el_include的itemGroup。
V2和V4在Activity里显示效果一样说明itemGroup没有改变!
V2和V4在Activity里显示效果一样说明itemGroup发生了改变,都是将R.layout.el_include里的内容添加到了itemGroup之后的View
那么merge和include的区别是:
include所引用的就是一个独立的View,而merge引用的View必须放到一个ViewGroup中。如下例:
<merge xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/view_content" android:layout_width="match_parent" android:layout_height="100dp" android:background="#4169E1" android:orientation="horizontal" > </LinearLayout> <RelativeLayout android:id="@+id/view_todo" android:layout_width="100dp" android:layout_height="match_parent" android:background="#800080" > </RelativeLayout> </merge>
R.layout.el_marge 引用必须是这样的:
View v = inflater.inflate(R.layout.el_marge, itemGroup, true);
否则报错:<merge /> can be used only with a valid ViewGroup root and attachToRoot=true
也就是说:merge是为了减少include里的根ViewGroup,那么inflate的marge必须放到ViewGroup中。
网上也有老说到marge和framelayout,其实我觉得没有联系。就是R.layout.el_marge若不添加一个ViewGroup中的它里面的元素而已规则和FrameLayout一样。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍Android LayoutInflater.inflate源码分析,包括了Android LayoutInflater.inflate源码分析的使用技巧和注意事项,需要的朋友参考一下 LayoutInflater.inflate源码详解 LayoutInflater的inflate方法相信大家都不陌生,在Fragment的onCreateView中或者在BaseAdapter的
本文向大家介绍Android LayoutInflater.inflate()详解及分析,包括了Android LayoutInflater.inflate()详解及分析的使用技巧和注意事项,需要的朋友参考一下 Android LayoutInflater.inflate()详解 深入理解LayoutInflater.inflate() 由于我们很容易习惯公式化的预置代码,有时我们会忽略很优
本文向大家介绍Android onCreate( )方法详细介绍,包括了Android onCreate( )方法详细介绍的使用技巧和注意事项,需要的朋友参考一下 onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Google Android Developers官网上的解释: onCre
本文向大家介绍Android Service中方法使用详细介绍,包括了Android Service中方法使用详细介绍的使用技巧和注意事项,需要的朋友参考一下 service作为四大组件值得我们的更多的关注 在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务。例如,一个从service播放音乐的音乐播放器,应被设置为前台运行,因为用户会明确地注意
本文向大家介绍Javascript中的call()方法介绍,包括了Javascript中的call()方法介绍的使用技巧和注意事项,需要的朋友参考一下 在Mozilla的官网中对于call()的介绍是: Call() 语法 Call() 参数 thisArg arg1, arg2, ... Javascript中的call()方法 先不关注上面那些复杂的解释,一步步地开始这个过程。 Call()方
本文向大家介绍Java中的hashcode方法介绍,包括了Java中的hashcode方法介绍的使用技巧和注意事项,需要的朋友参考一下 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法: 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。 为何Objec
my_custom_toast.xml MainActivity.java 几个音符 换句话说,这段代码将布局膨胀(并嵌入)到它自己的一个成员中,即LinearLayout(check)。这通过将xml文件膨胀为第二个LinearLayout来复制LinearLayout。
本文向大家介绍Android popupwindow简单使用方法介绍,包括了Android popupwindow简单使用方法介绍的使用技巧和注意事项,需要的朋友参考一下 先看下效果 1.首页 2.首页布局 3.popupwindow布局,可根据情况自行布局,这里是demo布局 4.popupwindow条目布局 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。