BaseToolbar :给你一个通用的Toolbar,一行代码搞定标题栏

MirkoWu / 文 发表于2018-03-30 09:25 次阅读 android,toolbar

相信大家对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>
    //代码设置
    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);

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

需要注意的是


    //将toolbar设置为actionbar 
    activity.setSupportActionBar(mBaseToolbar);
    //要执行这步需保证项目使用的主题Theme为 NoActionBar系列,或者设置
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>

截图


proguard-rules

    -keep class com.mirkowu.basetoolbar.** {*;}
收藏 赞 (0) 踩 (0)