刚接触安卓开发,在跟《第一行代码》学习中,想用viewbinding实现书中的内容
FirstActivity.kt:
class FirstActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = FirstLayoutBinding.inflate(layoutInflater)
setContentView(binding.root)
supportActionBar?.hide()
}
}
first_layout.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.myapplication.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
TitleLayout.kt:
class TitleLayout(context: Context, attrs: AttributeSet) :
LinearLayout(context, attrs) {
init {
val binding =
TitleBinding.inflate(LayoutInflater.from(context), this, true)
binding.titleBack.setOnClickListener {
val activity = context as Activity
activity.finish()
}
binding.titleEdit.setOnClickListener {
Toast.makeText(
context,
"You clicked Edit button",
Toast.LENGTH_SHORT
).show()
}
}
}
title.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bg">
<Button
android:id="@+id/titleBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/back_bg"
android:text="Back"
android:textColor="#fff" />
<TextView
android:id="@+id/titleText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="Title Text"
android:textColor="#fff"
android:textSize="24sp" />
<Button
android:id="@+id/titleEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/edit_bg"
android:text="Edit"
android:textColor="#fff" />
</LinearLayout>
问题:
在TitleLayout组件中,有个TitleBinding.inflate方法,其中第二个参数应该是传入组件的父组件?应该是要传入FirstActivity中的某个东西?
但是实际传入的是this,也就是传入自己本身TitleLayout,那不会导致自己挂载到了自己身上吗?
搞不太懂,希望能得到帮助