Android Studio3.6中的View Binding初探及用法區(qū)別
參考翻譯:https://developer.android.google.cn/topic/libraries/view-binding
View Binding是一項(xiàng)功能,使您可以更輕松地編寫(xiě)與視圖交互的代碼。在模塊中啟用視圖綁定后,它將為該模塊中存在的每個(gè)XML布局文件生成一個(gè)綁定類。綁定類的實(shí)例包含對(duì)在相應(yīng)布局中具有ID的所有視圖的直接引用。 在大多數(shù)情況下,視圖綁定替換findViewById。
設(shè)置說(shuō)明
視圖綁定在Android Studio 3.6 Canary 11+中可用。 需要在模塊中啟用視圖綁定,請(qǐng)將viewBinding元素添加build.gradle文件中,如下例所示:
android { ... viewBinding { enabled = true }}
如果要在生成綁定類時(shí)忽略布局文件,則將 tools:viewBindingIgnore='true' 屬性添加到該布局文件的根視圖中
<LinearLayout ... tools:viewBindingIgnore='true' > ...</LinearLayout>
使用方法
如果為模塊啟用了視圖綁定,則將為其包含的每個(gè)XML布局文件生成一個(gè)綁定類。 每個(gè)綁定類都包含對(duì)根視圖和所有具有ID的視圖的引用。 綁定類的名稱是通過(guò)將XML文件的名稱轉(zhuǎn)換為駝峰式大小寫(xiě)并將單詞“ Binding”添加到末尾來(lái)生成的。 例如,給定一個(gè)名為 result_profile.xml:
<LinearLayout ... > <TextView android: /> <ImageView android:cropToPadding='true' /> <Button android: android:background='@drawable/rounded_button' /></LinearLayout>
生成的綁定類將稱為ResultProfileBinding。 此類有兩個(gè)字段:一個(gè)名為name的TextView和一個(gè)名為button的Button。 布局中的ImageView沒(méi)有ID,因此在綁定類中沒(méi)有對(duì)其的引用。
每個(gè)綁定類還包括一個(gè)getRoot()方法,為相應(yīng)布局文件的根視圖提供直接引用。 在此示例中,ResultProfileBinding類中的getRoot()方法返回LinearLayout根視圖。
private ResultProfileBinding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ResultProfileBinding.inflate(layoutInflater); setContentView(binding.root);}
綁定類的實(shí)例現(xiàn)在可以用于引用任何視圖:
binding.name.text = viewModel.name;binding.button.setOnClickListener(new View.OnClickListener() { viewModel.userClicked()});
與findViewById的區(qū)別
與使用findViewById相比,視圖綁定具有重要的優(yōu)勢(shì):•空安全性:由于視圖綁定會(huì)創(chuàng)建對(duì)視圖的直接引用,因此不會(huì)因無(wú)效的視圖ID而導(dǎo)致空指針異常的風(fēng)險(xiǎn)。 此外,當(dāng)視圖僅在布局的某些配置中存在時(shí),在綁定類中包含其引用的字段將用@Nullable•類型安全性:每個(gè)綁定類中的字段具有與其在XML文件中引用的視圖匹配的類型。 這意味著沒(méi)有類強(qiáng)制轉(zhuǎn)換異常的風(fēng)險(xiǎn)。
這些差異意味著布局和代碼之間的不兼容性將導(dǎo)致編譯在編譯時(shí)而不是在運(yùn)行時(shí)失敗。
與data binding 庫(kù)的區(qū)別
視圖綁定和數(shù)據(jù)綁定庫(kù)都生成可用于直接引用視圖的綁定類。 但是,有明顯的區(qū)別:•data binding庫(kù)僅處理使用標(biāo)記創(chuàng)建的數(shù)據(jù)綁定布局。•view binding不支持布局變量或布局表達(dá)式,因此不能用于將布局與XML數(shù)據(jù)綁定。
到此這篇關(guān)于Android 中的View Binding初探及用法區(qū)別的文章就介紹到這了,更多相關(guān)android view binding內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. python excel和yaml文件的讀取封裝2. moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問(wèn)題及解決3. python爬蟲(chóng)實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊4. idea重置默認(rèn)配置的方法步驟5. Android組件化和插件化開(kāi)發(fā)6. Python內(nèi)存映射文件讀寫(xiě)方式7. php實(shí)現(xiàn)當(dāng)前用戶在線人數(shù)8. Android Studio 2.0 功能介紹9. Ajax返回值類型與用法實(shí)例分析10. Python中內(nèi)建模塊collections如何使用
