自定义标题栏

功能

实现自定义标题栏的功能,目前分为以下几类:

  1. 简单的自定义标题栏(ActionBar)
  2. 沉浸式自定义标题栏(ActionBar)
  3. MD风格的ToolBar

源码地址

TitleBar

简单的自定义标题栏

ActionBar最简单的实现,主要用于说明基本的流程和思路,为后面的进一步实现提供经验。

第一步

创建title的布局文件,我们后面将它导入(include)到主布局页面中。

title的布局文件主要是LinearLayout加上2个按钮和一个文本组成,其中文本居中

第二步

创建上一步自定义title文件对应的java文件,以实现点击功能,并在主布局文件中引入

第三步

在主布局文件对应的java文件中隐藏原来的默认标题,此处使用的是v7库的AppCompatActivity,所以ActionBar对象也要使用v7库的,注意导包的时候不要用错,另外对应的清单文件上activity的注册的theme也要使用v7库的

沉浸式自定义标题栏

此处是基于简单的ActionBar基础上的进阶使用,在上一个例子的基础上进行深化。

第一步

创建自定义title,与简单ActionBar不同的是,此处考虑了UI的美观性和一些适配情况。主要是去掉了按钮的边框,设置了按钮的点击效果和设置了图片显示。

对应的按钮点击显示效果实现的xml,在res下的drawble目录下创建button_selector.xml:

第二步

与简单Action一样导入自定义title到主界面的的布局文件中,并创建对应的java文件加载视图并实现按钮的功能。

第三步

定义theme的主题为NoActionBar,并考虑安卓版本低于4.4(不支持沉浸式)的情况,分别在values和values-21下对应的styles文件下创建同名的style theme,并在清单文件中使用。

第四步

在主界面的java文件中设置取ActionBar边框,并在对应的xml布局文件中添加android:fitsSystemWindows属性以防止我们的自定义标题框被覆盖

MD风格的ToolBar

ToolBar是谷歌官方推荐的Material Design里用于取代ActionBar的设计,它扩展了ActionBar的功能,又便于使用,灵活性也更高,是目前热门的使用方式

第一步

在value-21的style.xml下新建新的theme style,这里我们可以直接指定标题栏和它上部分的颜色,创建我们的界面的java文件后,在清单文件中注册使用

第二步

创建对应的布局文件中导入v7库的ToolBar

第三步

创建ToolBar的布局文件,并使用app:showAsAction设置显示位置,值为always表示永远显示除非空间不够;ifRoom表示屏幕不够时在菜单中显示;never表示永远显示。

第四步

创建的界面java文件上,设置使用ToolBar和加载菜单布局文件和实现菜单文件的功能。