-
簡介
- 在Android開發過程中,很多地方都不可避免的使用到inflate方法,如在給
Fragment
進行CreateView(建立檢視)
時,我們通常是inflater.inflate(R.layout.xxx, container, false)
來呼叫inflate方法的,不難發現,inflate方法的作用是將一個 xml 佈局檔案變成一個 view 物件。
- 在Android開發過程中,很多地方都不可避免的使用到inflate方法,如在給
-
注意事項:
-
這玩意是用來將 xml 轉換為 view 的
-
這玩意不能直接new初始化,透過
Activity
和SystemService
獲取,你也可以自定義他的源方法 -
因為效能問題,他只能把寫在layout裡被預處理過的 xml 轉換為 view ,不能隨便找個 xml 檔案就讓他轉換
-
-
引數解析
-
inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)
方法有三個引數-
resource:檢視資源,由於檢視是R類內的layout管控,通常傳參形式為
R.layout.xx
,xx
代表檢視佈局的 **xml **檔案 -
root:容器,view和它的關係就是水與水容器的關係,顯而易見,它是管控檢視xml檔案內控制元件的
width、height
等等屬性的,如果為null
,那部分屬性就會失去效用,甚至直接導致編譯的程式崩潰,通常傳承形式為ViewGroup
型別的物件,例如在此方法呼叫之前定義一個變數ViewGroup viewGroup = findViewById(R.id.xx)
,xx
代表最高階別檢視的ID,後面進行傳參viewGroup
即可。也可以直接在getView無法獲取到檢視資源時(findViewById無法使用)過載onCreateView方法編輯它進行繫結檢視資源:@Override public View onCreateView(LayoutInflater inflater, ViewGroup container) { View view = inflater.inflate(R.layout.xx, container, false); myGetView(view); //繫結指定view return view; } public void myGetView(View view){ //在這裡進行view的功能操作 }
-
attachToRoot:布林值型別的引數,ture/false,代表是否需要一鍵addView。例如通常情況下想要看到自己佈局的檢視是需要addView進行新增檢視的:
public class MainActivity extends AppCompatActivity { @override protected void oncreate(Bundle savedInstancestate){ super.oncreate(savedInstanceState); setContentView(R.layout.activity_main); ViewGroup viewGroup = findViewById(R.id.viewgroup); View view = getLayoutInflater().inflate(R.layout.xx, viewGroup, false); viewGroup.AddView(view) } }
傳入true引數即可省略AddView步驟:
public class MainActivity extends AppCompatActivity { @override protected void oncreate(Bundle savedInstancestate){ super.oncreate(savedInstanceState); setContentView(R.layout.activity_main); ViewGroup viewGroup = findViewById(R.id.viewgroup); View view = getLayoutInflater().inflate(R.layout.xx, viewGroup, true); } }
-
-
Android開發 - inflate方法與建立檢視解析
相關文章
- Android開發 - 檢視佈局屬性解析Android
- Android學習開發(問題解決)——android Unable to inflate view tag without class attributeAndroidView
- Android原始碼分析(LayoutInflater.from(this).inflate(resId,null);原始碼解析)Android原始碼Null
- Android Native 開發之 NewString 與 NewStringUtf 解析Android
- iOS開發-檢視與檢視控制器生命週期iOS
- Android開發 - Creator 類從 Parcel 中建立新的物件解析Android物件
- Android開發 - Context解析AndroidContext
- Android開發---在RecyclerView列表中新增自定義的列表頭部與尾部檢視AndroidView
- Android開發 - DialogFragment 類解析AndroidFragment
- Android開發 - BrowseFragment 類解析AndroidFragment
- Android開發 - 掌握ConstraintLayout(十)按比例設定檢視大小AndroidAI
- Android LayoutInflater.inflate各個引數作Android
- oracle db link的檢視建立與刪除Oracle
- 關於開發檢視
- Android開發筆記——點選檢視大圖過渡動畫與圖片縮放與移動Android筆記動畫
- iOS開發-列表檢視的基本介紹與使用iOS
- 第63課、深入解析檢視與委託(上)
- 探索 Android TDD 開發方法Android
- 探索 Android BDD 開發方法Android
- mysql建立索引和檢視MySql索引
- day04-檢視和檢視解析器
- Android視訊開發進階(part2-MP4檔案的解析)Android
- SpringMVC 檢視解析出錯SpringMVC
- Android系統原始碼分析--View繪製流程之-inflateAndroid原始碼View
- Git檢視分支建立時間Git
- EOS開發完全解析(三):EOS賬號建立
- Android開發 - 掌握ConstraintLayout(四)建立基本約束AndroidAI
- 配置多檢視解析器
- Android 6.0之前 建立window方法如下:Android
- Android檢視動畫集合AndoridViewAnimationsAndroid動畫View
- iOS開發-檢視控制器UINavigationController的介紹與基本使用iOSUINavigationController
- Android開發 - 儲存輔助類 SharedPreferences 解析Android
- Flutter外掛(Plugin)開發 - Android視角FlutterPluginAndroid
- Android日常學習:Android檢視動畫-View AnimationAndroid動畫View
- Android資料庫檢視庫---Android-Debug-DatabaseAndroid資料庫Database
- springmvc配置thymeleaf檢視解析器SpringMVC
- django rest framework 檢視原始碼解析DjangoRESTFramework原始碼
- ORACLE 檢視IP,解析機器名Oracle