要点:
1.自定义布局,添加到ToolBar中
2.自定义属性,如Title,back键的图片
3.自定义Class继承Toolbar,读取自定义属性,对Toolbar的布局显示,内容进行设置,最后需要对外公开一些函数用于设置标题、监听等。下面通过步骤来详细说明。
下面就来进行自定义ToolBar的封装
步骤:
1.自定义布局toolbar.xml,这里是自定义的星座App的toolBar,比较简单,只有一个返回按钮,和一个title。如果是复杂点的项目还可以在toolBar中添加搜索栏,右侧按钮等。
![](https://img.haomeiwen.com/i7753368/39b4fd57268e87c3.png)
2.在values文件夹下新建attrs.xml文件,用于存放一些自定义属性,如下图所示:
其中leftButtonIcon,左侧按钮图标,类型为reference,引用类型。myTitle,标题,类型为string。showleftButton:是否显示左侧图标。
3.自定义Class继承ToolBar,代码的主要工作是初始化界面还有监听器,对外公开操作的接口。
初始化界面的时候需要把自定义属性的用户输入的值通过TintTypedArray读取进来,然后进行一些界面显示方面的设置。
初始化监听器,需要用到接口的回调。具体步骤是公开的声明接口,接口里面有onClick方法;声明该接口的实现,作为Toolbar的私有成员变量;公开setListener方法,把传进来的Listener实现类赋值给这个成员变量;在必须的时候调用成员变量的onClick方法(如在左边的按钮的点击事件中调用)。
公开一些函数,比如设置标题,设置返回键的图标等等,这里的toolbar较简洁,可以把图标设置成统一的回退键,只提供是否显示左侧按钮的函数。
1)设置布局
![](https://img.haomeiwen.com/i7753368/9fa547b001e830f4.png)
注意:在自定义View中获取上下文,一般使用getContext()方法。
2)读取用户输入的自定义属性
![](https://img.haomeiwen.com/i7753368/8a1e27a98a2cdb8d.png)
3)编写函数,设置title,是否显示左侧按钮
![](https://img.haomeiwen.com/i7753368/07cd77e029dd1e23.png)
4)将获取的用户输入的自定义属性设置到标题和左侧按钮上
![](https://img.haomeiwen.com/i7753368/a24f051130bcfc98.png)
5)设置左侧按钮的监听事件。
![](https://img.haomeiwen.com/i7753368/22e6ed5f83871411.png)
4.使用ToolBar,在必须的地方如同一般的控件去使用就可以了,注意加上自定义属性的命名空间,一般为auto就可以了。
![](https://img.haomeiwen.com/i7753368/23b657b360f6f86a.png)
5.代码中使用
toolbar = findViewById(R.id.toolbar);
toolbar.setOnLeftButtonClickListener(new CNToolbar.OnLeftButtonClickListener() {
@Override
public void onClick() {
toolbar.setShowSearchView(); } });
网友评论