为Activity设置统一标题栏

   在实际Android App的开发过程当中,有很多场景我们需要拥有一个统一的标题栏,一般情况下,我们习惯使用统一为我们提供名的Toolbar,但是针对不同的Activity,逐一设置不同的ToolBar未免产生代码冗余,而且写起来也很揪心。

   刚开始解决这个问题的时候,我们第一时间会想到在自己的BaseActivity动点手脚,但是不在BaseActivity里面setContentView的话,我们是拿不到toolbar的实例的,而在继承了BaseActivity的其他Activity中,由于setContentView会强制以后者的布局内容为准,所以会把之前的一次调用覆盖掉,依然拿不到toolbar的ID的说,下面提供解决办法,为了便于理解由一个自定义的头部布局来代替ToolBar。

解决办法:

1.在BaseActivity中的onCreate方法里面

注意:是super.setContentView

 其中base_layout是一个包括头布局的通用布局文件

注意:要给通用的布局一个ID即root_layout

2.看到rootLayout的字样很多同学估计都明白了,这个Demo的实质就是利用ViewGroup的addView方法来进行布局管理

注意:第一个setContentView是BaseActivity的之类调用的,它本身还会调用一下参数为view的重载方法

这里可以解释下为什么1中是super.setContentView了,因为我们把Activity的本身两个SetContentView方法给覆写掉啦,所以要调用父类的方法然后通过BaseActivity的子类的setContentView(R.id.xxxx)方法来把其他布局添加到rootLayout上

3.关于initTop

initTop主要就是头部具体内容的设置方法,我的实现如下:

initTop具体实现

initTop可以自由发挥,我是利用两个字段一个type,一个title来控制标题栏,利用type来控制具体按钮的可见性,在利用可见性来控制点击事件,比如这个backButton如果可见的时候统一让它finish掉当前activity,达到回退的目的。

4.关于type和title字段的设置问题

我是在BaseActivity中写了一个set函数,像这样️

set具体实现

具体的使用方法,只是多了一句setActivityType,建议在BaseActivity给type和title一个默认值,这样不写也有样式

注意:setActivityType一定要在setContentView之前调用

具体代码见:github地址 觉得有用请给个star或者点个收藏 笔芯

IT文库 » 为Activity设置统一标题栏
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址