国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android開發(fā)中LayoutInflater用法詳解

2019-12-12 05:42:13
字體:
供稿:網(wǎng)友

本文實例講述了Android開發(fā)中LayoutInflater用法。分享給大家供大家參考,具體如下:

在實際開發(fā)中LayoutInflater這個類還是非常有用的,它的作用類似于findViewById()。不同點是LayoutInflater是用來找res/layout/下的xml布局文件,并且實例化;而findViewById()是找xml布局文件下的具體widget控件(如Button、TextView等)。

具體作用:

1、對于一個沒有被載入或者想要動態(tài)載入的界面,都需要使用LayoutInflater.inflate()來載入;

2、對于一個已經(jīng)載入的界面,就可以使用Activiyt.findViewById()方法來獲得其中的界面元素。

LayoutInflater 是一個抽象類,在文檔中如下聲明:

public abstract class LayoutInflater extends Object

獲得 LayoutInflater 實例的三種方式

1. LayoutInflater inflater = getLayoutInflater();//調(diào)用Activity的getLayoutInflater()

2. LayoutInflater inflater = LayoutInflater.from(context);

3. LayoutInflater inflater =  (LayoutInflater)context.getSystemService
                              (Context.LAYOUT_INFLATER_SERVICE);

其實,這三種方式本質(zhì)是相同的,從源碼中可以看出:

getLayoutInflater():

Activity 的 getLayoutInflater() 方法是調(diào)用 PhoneWindow 的getLayoutInflater()方法,看一下該源代碼:

public PhoneWindow(Context context){ super(context); mLayoutInflater = LayoutInflater.from(context);}

可以看出它其實是調(diào)用 LayoutInflater.from(context)。

LayoutInflater.from(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;}

可以看出它其實調(diào)用 context.getSystemService()。

結論:所以這三種方式最終本質(zhì)是都是調(diào)用的Context.getSystemService()。

另外getSystemService()是Android很重要的一個API,它是Activity的一個方法,根據(jù)傳入的NAME來取得對應的Object,然后轉(zhuǎn)換成相應的服務對象。以下介紹系統(tǒng)相應的服務。

傳入的Name 返回的對象 說明
WINDOW_SERVICE WindowManager 管理打開的窗口程序
LAYOUT_INFLATER_SERVICE LayoutInflater 取得xml里定義的view
ACTIVITY_SERVICE ActivityManager 管理應用程序的系統(tǒng)狀態(tài)
POWER_SERVICE PowerManger 電源的服務
ALARM_SERVICE AlarmManager 鬧鐘的服務
NOTIFICATION_SERVICE NotificationManager 狀態(tài)欄的服務
KEYGUARD_SERVICE KeyguardManager 鍵盤鎖的服務
LOCATION_SERVICE LocationManager 位置的服務,如GPS
SEARCH_SERVICE SearchManager 搜索的服務
VEBRATOR_SERVICE Vebrator 手機震動的服務
CONNECTIVITY_SERVICE Connectivity 網(wǎng)絡連接的服務
WIFI_SERVICE WifiManager Wi-Fi服務
TELEPHONY_SERVICE TeleponyManager 電話服務

inflate 方法

通過 sdk 的 api 文檔,可以知道該方法有以下幾種過載形式,返回值均是 View 對象,如下:

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

示意代碼:

LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);View view = inflater.inflate(R.layout.custom, (ViewGroup)findViewById(R.id.test));//EditText editText = (EditText)findViewById(R.id.content);// errorEditText editText = (EditText)view.findViewById(R.id.content);

對于上面代碼,指定了第二個參數(shù) ViewGroup root,當然你也可以設置為 null 值。

注意:

?inflate 方法與 findViewById 方法不同;
?inflater 是用來找 res/layout 下的 xml 布局文件,并且實例化;
?findViewById() 是找具體 xml 布局文件中的具體 widget 控件(如:Button、TextView 等)。

更多關于Android相關內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進階教程》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結

希望本文所述對大家Android程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 五莲县| 正阳县| 清涧县| 溆浦县| 奎屯市| 阜宁县| 邢台县| 鄂托克旗| 渝中区| 冕宁县| 开封县| 固阳县| 贺兰县| 霍城县| 淮北市| 桑日县| 赣榆县| 府谷县| 奉贤区| 华阴市| 明星| 黎川县| 班玛县| 大邑县| 灵寿县| 金湖县| 东港市| 南漳县| 那曲县| 甘孜| 称多县| 合川市| 桃江县| 恩平市| 罗定市| 兖州市| 临猗县| 武威市| 安多县| 东城区| 修水县|