**
* 2022年3月28日10:23:53
*
* 4.4 创建自定义控件
* 所有控件都是直接或间接继承自View,所有布局都是直接或者间接继承自ViewGroup
*
* 4.4.1 引入布局
* 引入布局解决重复代码的问题(代码复用)
* 创建控件布局 在activity_main.xml中include控件布局
* 在MainActivity中隐藏原始控件(比如隐藏标题栏supportActionBar?.hide())
* 4.4.2 创建自定义控件
* 引入布局解决了重复编写布局代码的问题,但如果布局中有一些控件要求能够响应事件,还得在Activity中去为这些代码注册响应事件,
* 但有些按键在不同的Activity中功能是一样的(比如back),那么如何自定义控件并且绑定响应事件呢
*
* ①自定义TitleLayout类继承自相应的布局类
* TitleLayout(context : Context,attrs:AttributeSet) : ConstraintLayout(context,attrs)
* ②在activity_main.xml中include自定义的布局类TitleLayout
* ③在init结构体中加载布局并绑定事件
* init {
LayoutInflater.from(context).inflate(R.layout.title,this)
val Back : ImageButton = findViewById(R.id.imageButton)
val Edit : ImageButton = findViewById(R.id.imageButton2)
Back.setOnClickListener {
val activity = context as Activity
activity.finish()
}
Edit.setOnClickListener {
Toast.makeText(context,"You clicked Edit button",Toast.LENGTH_SHORT).show()
}
}
kotlin中类型强制转换使用的关键字为as