Toolbar(去除默认的actionBar主题,使用Toolbar)

前面说了,Android默认每个界面都有ActionBar,而我们项目使用Toolbar,所以要给Activity配置去除ActionBar的主题,前面我们已经配置了,如果大家还没配置要配置了,才能使用Toolbar,不然会因为冲突,而崩溃。

如果没有这个依赖,则需要添加

 	//material design依赖
    //AppBarLayout在这里面
    implementation 'com.google.android.material:material:1.0.0'
/**
 * 通用标题界面
 */
public class BaseTitleActivity extends BaseCommonActivity {
    /**
     * 标题控件
     */
    @BindView(R.id.toolbar)
    protected Toolbar toolbar;


    @Override
    protected void initView() {
        super.initView();

        //初始化Toolbar
        setSupportActionBar(toolbar);

        //是否显示返回按钮
        if (isShowBackMenu()) {
            showBackMenu();
        }
    }

    /**
     * 显示返回按钮
     */
    protected void showBackMenu() {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    /**
     * 是否显示返回按钮
     * @return
     */
    protected boolean isShowBackMenu() {
        return true;
    }

    /**
     * 按钮点击回调事件
     *
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                //Toolbar返回按钮点击
                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }

    //    @Override
//    public void setTitle(int titleId) {//这个方法可以不用写,因为已经继承了
//        super.setTitle(titleId);
//    }
}

通用的tool_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- AppBarLayout主要用来实现标题折叠功能
    elevation:阴影高度  0dp:表示去掉阴影
    ?attr/actionBarSize:表示取找这个属性的值,如果找到就用这个actionBarSize值
    -->
<com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:theme="@style/AppTheme.AppBarOverlay"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    app:elevation="0dp">

    <!-- Toolbar控件
        PupupOverlay:翻译:折叠覆盖

        注意:上面
              style="@style/AppTheme.AppBarOverlay" 错误的
              (AppBarLayout正确写法是:theme="@style/AppTheme.AppBarOverlay" 注意是:theme)

              app:popupTheme="@style/AppTheme.PopupOverlay"
              (这个是toolbar的正确写法 app命名的)

       app:titleTextColor:标题字体颜色 app命名

       这里把  app:titleTextColor="@color/white"去掉(这个只能更改单个,不能更改返回箭头的颜色)
       所以把AppBarLayout的style变为android:theme,全称是:      android:theme="@style/AppTheme.AppBarOverlay"
    -->
    <androidx.appcompat.widget.Toolbar
        android:background="?attr/colorPrimary"
        android:id="@+id/toolbar"
        android:layout_height="?attr/actionBarSize"
        android:layout_width="match_parent"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</com.google.android.material.appbar.AppBarLayout>

上面用到的 theme style(在style.xml添加)

     
    <!--  AppBarLayout样式   
        这个AppBarLayout样式显示的是暗一点的颜色,那么里面的文字就会显示亮一点的颜色
     -->    用theme引用
    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
    
    <!--toolbar样式-->  用app:popupTheme引用
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

最后在其他Activity xml文件中引入即可

<include layout="@layout/tool_bar"/>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值