美文网首页
Toolbar(去除默认的actionBar主题,使用Toolb

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

作者: 追风z | 来源:发表于2020-09-23 22:25 被阅读0次

    前面说了,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"/>
    

    相关文章

      网友评论

          本文标题:Toolbar(去除默认的actionBar主题,使用Toolb

          本文链接:https://www.haomeiwen.com/subject/invwyktx.html