相信大家对Toolbar已经很熟悉了,因为页面中基本少不了标题栏。每写一个页面就要设置一堆标题菜单什么的,简直想吐血啊有没有。
现在有了一个通用的Toolbar,让你分分钟摆脱烦躁的Toolbar设置,废话不多说,直接
传送门 biu:https://github.com/MirkoWu/BaseToolbar
懒人福利可直接依赖 implementation ‘com.mirkowu:BaseToolbar:0.0.4’
对于设置Toolbar一般来说大家有以下几种做法:
1. 设置一个通用的Toolbar布局,里面写好常用按钮标题之类的,然后需要的时候 include 进XML,再到Activity里进行设置。这种方法,每次都要findViewById,然后再设置内容,简直繁琐有没有。
2. 与第一种类似,可以说是第一种进阶版,创建一个BaseActivity,用一个布局(LinearLayout/RelativeLayout)将Toolbar的布局和Activity的布局ContentView放进去上下排列好。或者有的人在BaseActivity中,再添加一些常用的方法,用于设置标题等等。这种虽说方便了很多,但是耦合度太高,例如项目中别的第三方Activity不能继承BaseActivity呢,又要来设置Toolbar,想想就难受。
3. 使用系统自带的Toolbar,但是绝大多数设计出来的UI跟这个标题样式差很多啊有没有,光一个标题居中,都满足不了,简直蛋疼。
4. 自定义Toolbar,像我这样。
BaseToolbar 有以下几大特点:
1. 满足日常通用的Toolbar功能,设置标题、左右菜单、状态栏、分割线等等,简直不再话下。
2. 继承自Toolbar,这是Toolbar的儿子,但是亲不亲就不知道了,所有能涉及关联到Toolbar的地方,它也可以。
3. 支持XML和代码创建二种方式。不想代码创建的时候我就当它是一个普通的控件,写在XML中,一样用。代码创建的话,有Builder模式,链式调用,简直不能太爽,一行代码就写完配置了。BaseToolbar.Builder().setTitle().addLeftView().addRightText().build();咦,已经写完了!!!
4. 配合BaseActivity代码少到可怜,哈哈。由于支持XML和代码创建二种方式,所以耦合低,当遇到Activity中不能继承BaseActivity时,直接使用XMl方式,完全没压力啊。
下面看下API及用法:
1.用在 XML
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.mirkowu.basetoolbar.BaseToolbar
android:id="@+id/mToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
// ...这里写布局
</LinearLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
//代码设置
mToolbar.setTitle("我是标题BaseToolbar");//设置标题
mToolbar.setBackButton(R.mipmap.back);//这里简化设置返回键,点击调用onBackPress()
mToolbar.hideBackButton();//需要的时候还可以隐藏
mToolbar.setBottomDivider(Color.GRAY, 1);//设置底部分割线,此处高度单位为px
mToolbar.hideBottomDivider();//需要的时候还可以隐藏
mToolbar.setStatusBarColor(Color.TRANSPARENT);//需要的话可以设置状态栏颜色,原理为增加一个状态栏高度的View
mToolbar.hideStatusBar();//需要的时候还可以隐藏
mToolbar.setTitleTextColor(Color.BLACK);//设置标题颜色
mToolbar.setSubTextColor(Color.GRAY);//设置菜单文本颜色
//添加常用的菜单
mToolbar.addRightText("右菜单", OnClickListener);
mToolbar.addRightText("右菜单", Color.BLACK, OnClickListener);//设置颜色,优先级 比setSubTextColor()高
mToolbar.addLeftText("左菜单", OnClickListener);
mToolbar.addLeftText("左菜单", Color.BLACK, OnClickListener);
mToolbar.addRightImage(R.drawable.menu, OnClickListener);
mToolbar.addLeftImage(R.drawable.menu, OnClickListener);
//工具本身也提供了一些创建菜单的方法,
mToolbar.addRightView(BaseToolbar.createTextMenu(context,text,textColor,textSize,onClickListener));
mToolbar.addLeftView(BaseToolbar.createImageMenu(context,imageResId,onClickListener));
//如果这些基础的不能满足 可以添加自定义View
mToolbar.addRightView(view);
mToolbar.addLeftView(view);
mToolbar.addCenterView(view);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
2.代码创建
//可以代码创建,建议使用Builder创建
BaseToolbar toolbar= new BaseToolbar.Builder()
.setTitle("我是标题BaseToolbar")
.setBackButton(R.mipmap.back)
.setBottomDivider(Color.GRAY, 1)
.setStatusBarColor(Color.TRANSPARENT)
.setTitleTextColor(Color.BLACK)
//......优雅的链式调用,快捷高效
.bulid();
//还可搭配BaseActivity使用,更方便,详情见demo
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
需要注意的是
//将toolbar设置为actionbar
activity.setSupportActionBar(mBaseToolbar);
//要执行这步需保证项目使用的主题Theme为 NoActionBar系列,或者设置
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
- 1
- 2
- 3
- 4
- 5
- 6
截图
proguard-rules
-keep class com.mirkowu.basetoolbar.** {*;}