View Binding 快速入門指南

更新 發佈閱讀 8 分鐘
【Android 入門指南】系列文章目錄:https://bit.ly/3TFgCzu
Android 線上課程教學影片:https://bit.ly/433Offj

課程摘要

本課程學習如何使用 View Binding。

教學影片

若您無法順利觀看教學影片,請先登入您的 YouTube 帳號,然後點擊以下連結加入我們的頻道會員:

  • 一般會員:成為一般會員後,您將能夠觀看我們所提供的一般會員專屬線上課程。
  • 精實會員:成為精實會員後,您將能夠觀看我們所提供的精實會員專屬線上課程。

findViewById 與 View Binding

findViewById (傳統舊方法)

XML 佈局文件中的 id ,需自行定義名稱,注意此為唯一值,不能重複。

<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

可以透過 findViewById 的方式獲取 XML 佈局文件中的元件,進行更多該元件設定。

val myTextView = findViewById<TextView>(R.id.myTextView)
myTextView.text = "HKT線上教室"

View Binding (現代新方法)

View Binding 使用方式

程式碼範例

範例名稱:View Binding
作者:HKT (侯光燦)
授權範圍:使用時必須註明出處且不得為商業目的之使用
範例下載點:點我下載

build.gradle (app)

View Binding 預設是被封印,沒有開啟,需要到 build.gradle (app) 開啟 View Binding ,先看一下自己當下 Android Studio 版本,擇一就好不要通通貼上去。

//AAndroid Studio Giraffe 2022.3.1 build.gradle.kts
android {
...
buildFeatures {
viewBinding = true
}
}

其他種版本設定方式:

//Android Studio 4.0 或更高版本
android {
...
buildFeatures {
viewBinding true
}
}

//Android Studio 3.6 (之前版本不能使用)
android {
...
viewBinding {
enabled = true
}
}

activity_main.xml

在空白範本(Empty View Activity)的佈局當中,在 TextView 裡面,新增一個 id 屬性,屬性值設定為為 myTextView。

<TextView
android:id="@+id/myTextView"
...
...
.../>

app\build\generated

進行編譯(build 或 rebuild)後,每個 Layout 就會對應生成一個綁定類別。如:MainActivity.kt 的 Layout 為 「activity_main.xml」,就會產生一個「ActivityMainBinding.java」,路徑如下,可以開啟該檔案觀摩一下,生成的檔案結構。

raw-image

MainActivity.kt

在 Activity 使用方式,如下:

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.myTextView.text = "HKT線上教室"
}
}

執行結果

raw-image

KT 的偷呷步

若 APP 應用程式裡,有大量頁面(Activity 或 Fragment),可以將 inflate 那一段,用映射的方式寫到自定義的基礎類別裡面,BaseActivity 或 BaseFragment,之後只要在 XML 佈局定義好 id 值,基本上就可以直接拿來用,不用因為畫面元件多,就要事前宣告和 findViewById 定義一堆,大量減少程式與維護的功。

基底類別

可以把共用、常用的東西都放在基底類別。

abstract class BaseActivity<viewBinding : ViewBinding>(val bindingFactory: (LayoutInflater) -> viewBinding) : AppCompatActivity() {

lateinit var binding: viewBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = bindingFactory(layoutInflater)
setContentView(binding.root)
}
}

使用基底類別 View Binding範例

class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate) {

//private lateinit var binding: ActivityMainBinding //省略

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

//binding = ActivityMainBinding.inflate(layoutInflater) //省略
//setContentView(binding.root) //省略

binding.btn1.text = "HKT線上教室"
}
}

findViewById 與 View Binding 比較

View Binding 相較於 findViewById 有以下優點

  • Null 安全
  • 類型安全
  • 大幅簡化程式碼
留言
avatar-img
HKT實驗室
31會員
278內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
HKT實驗室的其他內容
2025/01/31
踏上 Android 開發成功之路!2025 學習路線圖,從 Kotlin 程式語言基礎起步,逐步深入進階學習。掌握架構設計,利用豐富學習資源,設定短期與長期目標。遵循本指南,打造出令人驚艷的 Android 應用程式。
Thumbnail
2025/01/31
踏上 Android 開發成功之路!2025 學習路線圖,從 Kotlin 程式語言基礎起步,逐步深入進階學習。掌握架構設計,利用豐富學習資源,設定短期與長期目標。遵循本指南,打造出令人驚艷的 Android 應用程式。
Thumbnail
2025/01/23
針對 Android 開發提供了全面指導,包括架構規範(推薦 MVVM 模式與 Jetpack 元件)、語言選擇(優先使用 Kotlin)、效能優化(避免主執行緒阻塞)、安全性(使用 HTTPS 和最小權限原則)、相容性與適配(支援不同螢幕尺寸與多語言)、以及測試規範(單元測試與 UI 測試)。
Thumbnail
2025/01/23
針對 Android 開發提供了全面指導,包括架構規範(推薦 MVVM 模式與 Jetpack 元件)、語言選擇(優先使用 Kotlin)、效能優化(避免主執行緒阻塞)、安全性(使用 HTTPS 和最小權限原則)、相容性與適配(支援不同螢幕尺寸與多語言)、以及測試規範(單元測試與 UI 測試)。
Thumbnail
2024/01/02
全面掌握 Android 開發入門指南參考資料
2024/01/02
全面掌握 Android 開發入門指南參考資料
看更多
你可能也想看
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
本課程學習如何處理按鈕點擊事件並透過 Logcat 日誌輸出資訊確認按鈕邏輯是否正確。
Thumbnail
本課程學習如何處理按鈕點擊事件並透過 Logcat 日誌輸出資訊確認按鈕邏輯是否正確。
Thumbnail
本課程學習如何提取共同屬性,透過 Style 樣式包,套用至每個按鈕。來提升佈局的可讀性和好維護性。
Thumbnail
本課程學習如何提取共同屬性,透過 Style 樣式包,套用至每個按鈕。來提升佈局的可讀性和好維護性。
Thumbnail
本課程學習如何如何實作計算機介面,佈局文字元件及按鈕。學習使用 LinearLayout 垂直排列元件,調整背景色。透過 GridLayout 佈局計算機按鈕。
Thumbnail
本課程學習如何如何實作計算機介面,佈局文字元件及按鈕。學習使用 LinearLayout 垂直排列元件,調整背景色。透過 GridLayout 佈局計算機按鈕。
Thumbnail
本課程學習如何使用 View Binding。
Thumbnail
本課程學習如何使用 View Binding。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 layout_weight 權重屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 layout_weight 權重屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 layout_gravity 對齊屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 layout_gravity 對齊屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 gravity 對齊屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 gravity 對齊屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 padding 內部間距屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 padding 內部間距屬性。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News