网站调用视频,社保网站上做减员一直不审核,google网页版,宁陵视频网站建设一、inflate简介
inflate这个方法总共有四种形式#xff08;见下面#xff09;#xff0c;目的都是把xml表述的layout转化为View对象。
其中有一个比较常用#xff0c;View inflate(int resource, ViewGroup root)#xff0c;另三个#xff0c;其实目的和这个差不多。 …一、inflate简介
inflate这个方法总共有四种形式见下面目的都是把xml表述的layout转化为View对象。
其中有一个比较常用View inflate(int resource, ViewGroup root)另三个其实目的和这个差不多。
int resource也就是resource/layout文件在R文件中对应的ID这个必须指定。
而ViewGroup root则可以是nullnull时就只创建一个resource对应的View不是null时会将创建的view自动加为root的child。
二、setContentView和inflate区别
setContentView()一旦调用, layout就会立刻显示UI。而inflate只会把Layout形成一个以view类实现成的对象有需要时再用setContentView(view)显示出来。 一般在activity中通过setContentView()将界面显示出来但是如果在非activity中如何对控件布局设置操作了这需LayoutInflater动态加载。 TextView
android:idid/tview
android:layout_widthfill_parent
android:layout_heightwrap_content
android:textATAAW.COM
/Button
android:layout_widthfill_parent
android:layout_heightwrap_content
android:idid/button
android:text按钮
/在程序中动态加载以上布局。 LayoutInflater flater LayoutInflater.from(this); View view flater.inflate(R.layout.example, null); 获取布局中的控件。 button (Button) view.findViewById(R.id.button); textView (TextView)view.findViewById(R.id.tview); *********************************************************** 三、接下来结合源码说说inflate方法的四种形式 inflate方法总共有四种形式把xml表达的layout转化为view. This class is used to instantiate layout xml files into its corresponding view object. It is never be used directly——use getLayoutInflater() or getSystemService(String)getLayoutInflate() or getSystemService(String) to retrieve a standard LayoutInflater instance that is already hooked up that is already hook up to the current context and correct configured for the device you are running on. 1 Context.public abstract object getSystemService(String name) 2 两种获得LayoutInflater的方法 a. 通过SystemService获得 LayoutInflater inflater(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLEATER_SERVICE); b. 从给定的context中获取 Public static LayoutInflater from(Context context) c. 两者的区别实际上是一样的源码 /** * Obtains the LayoutInflater from the given context. */ public static LayoutInflater from(Context context) { LayoutInflater LayoutInflater (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (LayoutInflater null) { throw new AssertionError(LayoutInflater not found.); } return LayoutInflater; } 3 LayoutInflater.inflate()将Layout文件转换为View专门供Layout使用的Inflater。虽然Layout也是View的子类但在android中如果想将xml中的Layout转换为View放入.java代码中操作只能通过Inflater而不能通过findViewById()。 4 LinearLayout linearLayout (LinearLayout) findViewById(R.id.placeslist_linearlayout); linearLayout.addView(place_type_text); 5 findViewById有两种形式 R.layout.xx是引用res/layout/xx.xml的布局文件(inflate 方法)R.id.xx是引用布局文件里面的组件组件的id是xxfindViewById方法。所有的组件id都能用R.id.xx来查看但是组件不在setContentView()里面的layout中就无法使用Activity.findViewById()会出现空指针异常 a. activity中的findViewById(int id) b. View 中的findViewById(int id) 6.不同点是LayoutInflater是用来找layout下xml布局文件并且实例化而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。