01.引入布局
作用:提取重复的布局代码,方便进行复用
新建title.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/button1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="BACK"
android:textColor="#fff"
android:layout_margin="5dp"
android:layout_gravity="center"
android:background="@drawable/ic_launcher_background"
/>
<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/button2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="EDIT"
android:textColor="#fff"
android:layout_margin="5dp"
android:layout_gravity="center"
android:background="@drawable/ic_launcher_background"
/>
</LinearLayout>
在activity_main.xml中引入上述布局
02.创建自定义控件
class TitleLayout(context:Context,attrs:AttributeSet) : LinearLayout(context,attrs) {
init{
LayoutInflater.from(context).inflate(R.layout.title,this)
val titleBack: Button=findViewById(R.id.titleBack)
val titleEdit: Button=findViewById(R.id.titleEdit)
titleBack.setOnClickListener {
val activity=context as Activity
activity.finish()
}
titleEdit.setOnClickListener {
Toast.makeText(context,"You clicked Edit button",Toast.LENGTH_LONG).show()
}
}
}
通过LayoutInflater的from()方法可以构建出 一个LayoutInflater对象,然后调用inflate()方法就可以动态加载一个布局文件。 inflate()方法接收两个参数:第一个参数是要加载的布局文件的id,这里我们传入 R.layout.title;第二个参数是给加载好的布局再添加一个父布局,这里我们想要指定为 TitleLayout,于是直接传入this。