一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

setContentView和inflate區(qū)別

 gideshi 2012-12-09
 一般用LayoutInflater做一件事:inflate

inflate這個(gè)方法總共有四種形式(見下面),目的都是把xml表述的layout轉(zhuǎn)化為View對(duì)象。
其中有一個(gè)比較常用,View inflate(int resource, ViewGroup root),另三個(gè),其實(shí)目的和這個(gè)差不多。

int resource,也就是resource/layout文件在R文件中對(duì)應(yīng)的ID,這個(gè)必須指定。
而ViewGroup root則可以是null,null時(shí)就只創(chuàng)建一個(gè)resource對(duì)應(yīng)的View,不是null時(shí),會(huì)將創(chuàng)建的view自動(dòng)加為root的child。

setContentView和inflate區(qū)別:
setContentView()一旦調(diào)用, layout就會(huì)立刻顯示UI;而inflate只會(huì)把Layout形成一個(gè)以view類實(shí)現(xiàn)成的對(duì)象,有需要時(shí)再用setContentView(view)顯示出來
一般在activity中通過setContentView()將界面顯示出來,但是如果在非activity中如何對(duì)控件布局設(shè)置操作了,這需LayoutInflater動(dòng)態(tài)加載
< TextView
android:id="@+id/tview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ATAAW.COM"
/>
< Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="按鈕"
/>
在程序中動(dòng)態(tài)加載以上布局。
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);
***********************************************************
接下來結(jié)合源碼說說inflate方法的四種形式:
inflate方法總共有四種形式,把xml表達(dá)的layout轉(zhuǎn)化為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. 兩者的區(qū)別:實(shí)際上是一樣的,源碼
/**
     * 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文件轉(zhuǎn)換為View,專門供Layout使用的Inflater。雖然Layout也是View的子類,但在android中如果想將xml中的Layout轉(zhuǎn)換為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是xx(findViewById方法)。所有的組件id都能用R.id.xx來查看,但是組件不在setContentView()里面的layout中就無法使用,Activity.findViewById()會(huì)出現(xiàn)空指針異常
a. activity中的findViewById(int id)
b. View 中的findViewById(int id)
6.不同點(diǎn)是LayoutInflater是用來找layout下xml布局文件,并且實(shí)例化!而findViewById()是找具體xml下的具體 widget控件(如:Button,TextView等)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    出差被公高潮久久中文字幕| 91超精品碰国产在线观看| 国产精品一区二区三区日韩av| 欧美日韩国产午夜福利| 日韩欧美亚洲综合在线| 免费精品一区二区三区| 国产一级一片内射视频在线| 粉嫩国产一区二区三区在线| 福利在线午夜绝顶三级| 欧美乱码精品一区二区三| 91精品国产综合久久精品| 91久久国产福利自产拍 | 欧美午夜一级艳片免费看| 日韩和欧美的一区二区三区| 蜜桃av人妻精品一区二区三区| 午夜精品一区二区av| 亚洲中文字幕免费人妻| 91精品日本在线视频| 国产日韩精品激情在线观看| 国产精品大秀视频日韩精品| 成人精品国产亚洲av久久| 欧美极品欧美精品欧美| 亚洲永久一区二区三区在线| 日本熟女中文字幕一区| 很黄很污在线免费观看| 日本午夜一本久久久综合| 亚洲国产精品肉丝袜久久| 亚洲欧美日韩国产自拍| 欧美小黄片在线一级观看| 欧美一区二区三区喷汁尤物| 日韩性生活视频免费在线观看| 丁香七月啪啪激情综合| 欧美成人高清在线播放| 在线日韩中文字幕一区| 国产成人一区二区三区久久| 日韩一区二区三区高清在| 好吊日视频这里都是精品| 婷婷激情四射在线观看视频 | 日韩免费av一区二区三区| 91精品国自产拍老熟女露脸| 人妻久久一区二区三区精品99|