自定义控件
使用自定义控件时,无需重写事件,只需在自定义控件里设好监听器,写好触发事件即可。这样可以解决编写重复布局代码的问题。
根据上一篇《引入布局》,已创建好一个顶部布局“title”,接下来需要做的是创建一个TitleLayout类继承LinearLayout,让它成为我们自定义的标题栏控件,代码如下:
首先重写LinearLayout中带有两个参数的构造函数,在布局中引入TitleLayout控件就会调用这个构造函数。然后在构造函数中需要对标题栏布局进行动态加载,这就要借助LayoutInflater来实现。通过LayoutInflater的from()方法可以构建一个LayoutInflater对象,然后调用inflate()方法就可以动态加载一个布局文件,inflate()方法接受两个参数,第一个参数是要加载的布局文件的id,第二个参数是给加载好的布局再添加一个父布局,这里我们想要指定为TitleLayout。接下来修改activity_main.xml中的代码,如下:
要引入包名,然后再文件名。然后就是在TitleLayout里设按钮监听器以及触发事件了。运行的结果就是跟上一篇《引入布局》一样的,不过是多了按钮事件。运行结果如下: