BaseToolbar :给你一个通用的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>
  • 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.** {*;}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个为WebView添加操作栏的 Kotlin 代码示例: 首先,在布局文件中添加一个 WebView 和一个操作栏布局: ``` <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:id="@+id/web_view" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:id="@+id/toolbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentTop="true" android:background="#FFFFFF" android:elevation="4dp"> <ImageButton android:id="@+id/back_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_arrow_back" android:padding="10dp" /> <ImageButton android:id="@+id/forward_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_arrow_forward" android:padding="10dp" /> <ImageButton android:id="@+id/refresh_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_refresh" android:padding="10dp" /> </LinearLayout> </RelativeLayout> ``` 然后,在 Kotlin 代码中,找到 WebView 和操作栏布局: ``` val webView = findViewById<WebView>(R.id.web_view) val toolbarLayout = findViewById<LinearLayout>(R.id.toolbar_layout) ``` 接下来,给操作栏按钮添加点击事件和实现相应的 WebView 方法: ``` val backButton = findViewById<ImageButton>(R.id.back_button) backButton.setOnClickListener { if (webView.canGoBack()) { webView.goBack() } } val forwardButton = findViewById<ImageButton>(R.id.forward_button) forwardButton.setOnClickListener { if (webView.canGoForward()) { webView.goForward() } } val refreshButton = findViewById<ImageButton>(R.id.refresh_button) refreshButton.setOnClickListener { webView.reload() } ``` 最后,设置 WebView 的客户端,以便在页面加载时更新操作栏按钮状态和标题: ``` webView.webChromeClient = object : WebChromeClient() { override fun onProgressChanged(view: WebView?, newProgress: Int) { // 当页面加载时更新操作栏按钮状态 backButton.isEnabled = webView.canGoBack() forwardButton.isEnabled = webView.canGoForward() } override fun onReceivedTitle(view: WebView?, title: String?) { // 当页面标题变化时更新操作栏标题 supportActionBar?.title = title } } ``` 以上就是一个简单的为 WebView 添加操作栏的 Kotlin 代码示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值