2022-10-10

【Kotlin】檢視繫結 ViewBinding

參考資料 ----

以往要存取設定 layout 中的某個元件時,是透過 findViewById()

現在以 ViewBinding 的方式,就可以簡化,不需要上面的宣告了;AndroidStudio 3.6(含)以上版本才支援本功能。

app 層級 build.gradle
  1.  
  2. ...
  3. ...
  4.  
  5. android {
  6. ...
  7. ...
  8. // 舊寫法
  9. // viewBinding {
  10. // enabled = true
  11. // }
  12. // 依據 Android Studio 的版本,可能會提示您改成下面的寫法
  13. buildFeatures {
  14. viewBinding true
  15. }
  16. ...
  17. ...
  18.  

activity_main.xml
  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <RelativeLayout
  4. xmlns:android="http://schemas.android.com/apk/res/android"
  5. xmlns:tools="http://schemas.android.com/tools"
  6. xmlns:ads="http://schemas.android.com/apk/res-auto"
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. android:paddingBottom="@dimen/activity_vertical_margin"
  10. android:paddingLeft="@dimen/activity_horizontal_margin"
  11. android:paddingRight="@dimen/activity_horizontal_margin"
  12. android:paddingTop="@dimen/activity_vertical_margin"
  13. tools:context=".MainActivity">
  14.  
  15. <TextView
  16. android:id="@+id/lblHello"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:text="Hello World!"
  20. android:layout_alignParentEnd="true"
  21. android:layout_alignParentStart="true"
  22. android:layout_alignParentTop="true" />
  23.  
  24. </RelativeLayout>
  25.  

MainActivity.kt
  1.  
  2. ...
  3. ...
  4.  
  5. // import [完整package name].databinding.[layout駝峰命名+Binding]
  6. // 在本例中:
  7. // 我們的 package name 為 com.example.vb
  8. // layout 名為 activity_main.xml
  9. import com.example.vb.databinding.ActivityMainBinding // 這列在您輸入第 13 列的宣告時會自動提示生成
  10.  
  11. class MainActivity : AppCompatActivity() {
  12.  
  13. private lateinit var binding: ActivityMainBinding // 宣告時會自動提示生成第 9 列
  14.  
  15. override fun onCreate(savedInstanceState: Bundle?) {
  16. super.onCreate(savedInstanceState)
  17. binding = ActivityMainBinding.inflate(layoutInflater)
  18. val view = binding.root
  19. // setContentView(R.layout.activity_main)
  20. setContentView(view)
  21. // 變更元件 lbltHello 內的文字
  22. binding.lblHello.text = "大家好"
  23.  
  24. }
  25. }
  26.  


沒有留言:

張貼留言