站長留言

  • ✅ 本站維護及更新歷史紀錄,詳情請參考公告
  • ✅ 有任何意見、想法,歡迎留言給Spicy知道喔
  • ✅ 固定於每周一至周五更新Blogger文章,周末不定期
程式Android 安卓

【APP/Android】如何使用 LayoutInflater 動態載入頁面

tags: APP Android


Common 簡要說明

  1. 首先要知道,什麼是已經被載入的 Layout ,什麼是還沒有載入的
  2. 啟動一個應用,與入口 Activity 相關的 Layout (常見的是activity_main.xml)就是被載入的,即在 onCreate()中的。
  3. 而其他的 Layout 是沒有被載入的,就要透過動態載入了或透過另一個 Activity 來載入

LayoutInflater 簡介

作用

  • 作用類似於 findViewById():xml佈局檔下的具體widget控制項(如 Button、TextView…)
  • 而 LayoutInflater 是用來找 res/layout/ 下的 xml 佈局檔,並且實例化
  • 簡單來說:
    1. 對於一個沒有被載入或者想要動態載入的頁面,要使用LayoutInflater.inflate()來載入
    2. 對於一個已經載入Activity的就會使用findViewById來載入介面元素

使用方法

  1. 一般都是在Activity中的onCreate()中利用setContentView來載入xml定義好的介面
  2. getSystemService(Context.LAYOUT_INFLATER_SERVICE) 方法可以獲得一個 LayoutInflater
  3. 透過LayoutInflater inflater = getLayoutInflater(),並使用inflate的方法來載入Layout

Code 程式碼

  • 以下3種code都是同樣的功能:
    1. LayoutInflater inflater = getLayoutInflater();
    2. LayoutInflater localinflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    3. LayoutInflater inflater = LayoutInflater.from(context);

LayoutInflater 的 method

  • inflate(int resource, ViewGroup root)
    • resource:Layout 的 ID,例如:R.layout.example
    • root:該Layout的外部再嵌套一層parent Layout,如果不需要就直接填null
  • inflate(int resource, ViewGroup root, boolean attachToRoot)
    • 若root為null,attachToRoot設置任何值都沒有意義
    • 若root不為null,attachToRoot設為true,則會給加載的佈局文件的指定一個parent Layout
    • 若root不為null,attachToRoot設為false,則會將佈局文件最外層的所有Layout屬性進行設置,當該view被添加到parent view當中時,這些Layout屬性會自動生效

Example 範例:

LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(R.layout.example, parent, false);

Reference 參考資料

  1. LayoutInflater作用及使用:
    http://corun2012.pixnet.net/blog/post/63282226-layoutinflater作用及使用
  2. Android LayoutInflater的使用:
    http://fecbob.pixnet.net/blog/post/39253775-android-layoutinflater的使用
  3. LayoutInflater 官方文件:https://developer.android.com/reference/android/view/LayoutInflater.html
  4. Android LayoutInflater原理分析,带你一步步深入了解View(一):https://blog.csdn.net/guolin_blog/article/details/12921889

沒有留言:

張貼留言

本網站建議使用電腦或平板瀏覽