以往要存取設定 layout 中的某個元件時,是透過 findViewById()。
現在以 ViewBinding 的方式,就可以簡化,不需要上面的宣告了;AndroidStudio 3.6(含)以上版本才支援本功能。
app 層級 build.gradle
- ...
- ...
- android {
- ...
- ...
- // 舊寫法
- // viewBinding {
- // enabled = true
- // }
- // 依據 Android Studio 的版本,可能會提示您改成下面的寫法
- buildFeatures {
- viewBinding true
- }
- ...
- ...
activity_main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- xmlns:ads="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context=".MainActivity">
- <TextView
- android:id="@+id/lblHello"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Hello World!"
- android:layout_alignParentEnd="true"
- android:layout_alignParentStart="true"
- android:layout_alignParentTop="true" />
- </RelativeLayout>
MainActivity.kt
- ...
- ...
- // import [完整package name].databinding.[layout駝峰命名+Binding]
- // 在本例中:
- // 我們的 package name 為 com.example.vb
- // layout 名為 activity_main.xml
- import com.example.vb.databinding.ActivityMainBinding // 這列在您輸入第 13 列的宣告時會自動提示生成
- class MainActivity : AppCompatActivity() {
- private lateinit var binding: ActivityMainBinding // 宣告時會自動提示生成第 9 列
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityMainBinding.inflate(layoutInflater)
- val view = binding.root
- // setContentView(R.layout.activity_main)
- setContentView(view)
- // 變更元件 lbltHello 內的文字
- binding.lblHello.text = "大家好"
- }
- }
沒有留言:
張貼留言