美文网首页Android Devandroid实用技术技术
Android开发:最详细的 Toolbar 开发实践总结

Android开发:最详细的 Toolbar 开发实践总结

作者: ec95b5891948 | 来源:发表于2016-02-20 21:16 被阅读70783次

    最详细的 Toolbar 开发实践总结

    过年前发了一篇介绍 Translucent System Bar 特性的文章 Translucent System Bar 的最佳实践,收到很多开发者的关注和反馈。今天开始写第二篇,全面的介绍一下 Toolbar 的使用。说起 Toolbar ,可能有很多开发的童鞋还比较陌生,没关系,请接着往下看。

    初识 Toolbar

    Toolbar 是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 ,Google 非常推荐大家使用 Toolbar 来作为Android客户端的导航栏,以此来取代之前的 Actionbar 。与 Actionbar 相比,Toolbar 明显要灵活的多。它不像 Actionbar 一样,一定要固定在Activity的顶部,而是可以放到界面的任意位置。除此之外,在设计 Toolbar 的时候,Google也留给了开发者很多可定制修改的余地,这些可定制修改的属性在API文档中都有详细介绍,如:

    • 设置导航栏图标;
    • 设置App的logo;
    • 支持设置标题和子标题;
    • 支持添加一个或多个的自定义控件;
    • 支持Action Menu;
    Toolbar支持的特性

    总之,与 Actionbar 相比,Toolbar 让我感受到Google满满的诚意。怎样?是否已经对 Toolbar 有大概的了解,跃跃欲试的感觉出来了有木有?接下来,我们就一步一步的来看如何使用 Toolbar(其实是我使用 Toolbar 踩坑填坑的血泪史,你们接下去看,我先擦个眼泪.... )。

    开始使用 Toolbar

    前面提到 Toolbar 是在 Android 5.0 才开始加上的,Google 为了将这一设计向下兼容,自然也少不了要推出兼容版的 Toolbar 。为此,我们需要在工程中引入 appcompat-v7 的兼容包,使用 android.support.v7.widget.Toolbar 进行开发。下面看一下代码结构,同样把重点部分已经红圈圈出:

    关键部分代码
    • ToolbarActivity 包含了 Toolbar 的一些基本使用, ZhiHuActivity 是在熟悉了 Toolbar 后对知乎主页面的一个高仿实现。

    • layout和menu文件夹分别是上面提到的两个Activity的布局文件 和 actionmenu 菜单文件。

    • values、values-v19、values-v21 中包含了一些自定义的 theme,后面用到的时候会顺带讲解。

    我们先来看一下 ToolbarActivity 的运行效果

    ToolbarActivity效果图

    按照效果图,从左到右分别是我们前面提及到的 导航栏图标App的logo标题和子标题自定义控件、以及 ActionMenu 。接着,我们来看下布局文件和代码实现。

    首先,在布局文件 activity_tool_bar.xml 中添加进我们需要的 Toolbar 控件

    
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/color_0176da">
    
            <!--自定义控件-->
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Clock" />
        </android.support.v7.widget.Toolbar>
    </LinearLayout>
    
    

    接着在 base_toolbar_menu.xml 中添加 action menu 菜单项

    
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <item
            android:id="@id/action_search"
            android:icon="@mipmap/ic_search"
            android:title="@string/menu_search"
            app:showAsAction="ifRoom" />
    
        <item
            android:id="@id/action_notification"
            android:icon="@mipmap/ic_notifications"
            android:title="@string/menu_notifications"
            app:showAsAction="ifRoom" />
    
        <item
            android:id="@+id/action_item1"
            android:title="@string/item_01"
            app:showAsAction="never" />
    
        <item
            android:id="@+id/action_item2"
            android:title="@string/item_02"
            app:showAsAction="never" />
    </menu>
    
    

    最后到 ToolbarActivity 中调用代码拿到这 Toolbar 控件,并在代码中做各种setXXX操作。

    
    /**
     * Toolbar的基本使用
     */
    public class ToolBarActivity extends BaseActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_tool_bar);
    
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            
            toolbar.setNavigationIcon(R.mipmap.ic_drawer_home);//设置导航栏图标
            toolbar.setLogo(R.mipmap.ic_launcher);//设置app logo
            toolbar.setTitle("Title");//设置主标题
            toolbar.setSubtitle("Subtitle");//设置子标题
    
            toolbar.inflateMenu(R.menu.base_toolbar_menu);//设置右上角的填充菜单
            toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    int menuItemId = item.getItemId();
                    if (menuItemId == R.id.action_search) {
                        Toast.makeText(ToolBarActivity.this , R.string.menu_search , Toast.LENGTH_SHORT).show();
    
                    } else if (menuItemId == R.id.action_notification) {
                        Toast.makeText(ToolBarActivity.this , R.string.menu_notifications , Toast.LENGTH_SHORT).show();
    
                    } else if (menuItemId == R.id.action_item1) {
                        Toast.makeText(ToolBarActivity.this , R.string.item_01 , Toast.LENGTH_SHORT).show();
    
                    } else if (menuItemId == R.id.action_item2) {
                        Toast.makeText(ToolBarActivity.this , R.string.item_02 , Toast.LENGTH_SHORT).show();
    
                    }
                    return true;
                }
            });
    
        }
    
    }
    
    

    代码到此已经完成了 Toolbar 的基本使用,注意,是基本使用而已!!!!!下面有几个代码里面需要注意的地方:

    1. 我们在使用 Toolbar 时候需要先隐藏掉系统原先的导航栏,网上很多人都说给Activity设置一个NoActionBar的Theme。但个人觉得有点小题大做了,所以这里我直接在BaseActivity中调用 supportRequestWindowFeature(Window.FEATURE_NO_TITLE) 去掉了默认的导航栏(注意,我的BaseActivity是继承了AppCompatActivity的,如果是继承Activity就应该调用requestWindowFeature(Window.FEATURE_NO_TITLE));

    2. 如果你想修改标题和子标题的字体大小、颜色等,可以调用setTitleTextColorsetTitleTextAppearancesetSubtitleTextColorsetSubtitleTextAppearance 这些API;

    3. 自定义的View位于 titlesubtitleactionmenu 之间,这意味着,如果 titlesubtitle 都在,且 actionmenu选项 太多的时候,留给自定义View的空间就越小;

    4. 导航图标app logo 的区别在哪?如果你只设置 导航图标( or app logo) 和 titlesubtitle,会发现 app logotitlesubtitle 的间距比较小,看起来不如 导航图标 与 它们两搭配美观;

    5. Toolbar 和其他控件一样,很多属性设置方法既支持代码设置,也支持在xml中设置(这里也是最最最最最坑爹的地方,如何坑爹法,请接着往下看);

    Toolbar 踩坑填坑

    • 坑一:xml布局文件中,Toolbar属性设置无效

    刚开始使用Toolbar的时候,我的布局文件中是这样写的

    
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/color_0176da"
            android:logo="@mipmap/ic_launcher"
            android:navigationIcon="@mipmap/ic_drawer_home"
            android:subtitle="456"
            android:title="123">
    
            <!--自定义控件-->
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Clock" />
        </android.support.v7.widget.Toolbar>
    </LinearLayout>
    
    

    在真机跑起来之后,看到的结果是下面这样的。

    Toolbar 属性设置无效

    此时心中真是万千匹草泥马在奔腾,除了设置背景色和TextView有效外,说好的 logonavigationIconsubtitletitle 都跑哪去了?在编译器没报错又不见效果的情况下,参考了其他开发者的用法后找到了以下的解决方案,就是在根布局中加入自定义属性的命名空间

    
    xmlns:toolbar="http://schemas.android.com/apk/res-auto"(这里的toolbar可以换成你想要其他命名,做过自定义控件的童鞋相比很熟悉此用法了)
    
    

    然后把所有用 android:xxx 设置无效的,都用 toolbar:xxx 设置即可生效。最终的布局代码如下:

    
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:toolbar="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/color_0176da"
            toolbar:navigationIcon="@mipmap/ic_drawer_home"
            toolbar:logo="@mipmap/ic_launcher"
            toolbar:subtitle="456"
            toolbar:title="123">
    
            <!--自定义控件-->
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Clock" />
        </android.support.v7.widget.Toolbar>
    </LinearLayout>
    
    

    到此即可解决 xml 中属性设置失效的问题,为什么会出现这种问题呢?我猜测是因为这个控件是兼容版的控件,用 android:xxx 设置无效是的这些属性是在兼容包中,不在默认的Android SDK中,所以我们需要额外的引入。至于为什么IDE不报错,估计就是bug了吧!

    • 坑二:Action Menu Item 的文字颜色设置无效

    系统默设置了ActionMenu每个Item的文字颜色和大小,像ToolbarActivity在Google原生5.1系统下默认效果就是下面这样的

    Android 5.1 默认的ActionMenu Item的风格

    此时,如果我有需求要改变一下item文字颜色,应该怎么破?我按照网上比较普遍的解决方案,做了如下两步的修改操作:

    • 在styles.xml中自定义一个Theme,并设置 actionMenuTextColor 属性(注意:不是 android:actionMenuTextColor )
    
    <style name="Theme.ToolBar.Base" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="actionMenuTextColor">@color/color_red</item>
    </style>
    
    
    • 在布局文件的Toolbar中设置popupTheme(注意:是toolbar:xxx,不是android:xxx)
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/color_0176da"
            toolbar:popupTheme="@style/Theme.ToolBar.Base">
    
            <!--自定义控件-->
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Clock" />
        </android.support.v7.widget.Toolbar>
    
    

    运行之后,文字的颜色的并没有发生任何改变。说好的改变颜色呢.....找来找去,最后在 StackOverflow 找到一个还不错的解决方案,就是把上面的的 actionMenuTextColor 属性换成 android:textColorPrimary 即可解决,最终得到下面的运行效果。

    成功修改 actionmenu item 文字的颜色

    这种方法也有一个小缺点,如果我把自定义控件换成Button,你会发现Button默认的文字颜色也变成了红色。所以,此处如果有朋友有更好的解决方案,请留言赐教。

    如果你想要修改 ActionMenu Item 的文字大小,也可以在theme中设置加上如下设置

    
    <item name="android:textSize">20sp</item>
    
    

    以上就是目前使用 Toolbar 一些比较折腾的坑,感觉 Google 对 Toolbar 这些坑,还可以进一步优化优化,不然就坑苦了开发者们了。

    仿知乎主页面

    为了加深一下 Toolbar 的开发体验,我们使用 Toolbar 来实现知乎主页的效果!先来看下知乎主页的效果

    Android 5.1上知乎主页效果图

    如果前面的内容你看明白,想撸出这个界面无非是几分钟的事情,下面就直接上代码,不做赘述了。

    ZhiHuActivity界面代码

    
    public class ZhiHuActivity extends BaseActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_zhi_hu);
    
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            toolbar.inflateMenu(R.menu.zhihu_toolbar_menu);
    
            toolbar.setNavigationIcon(R.mipmap.ic_drawer_home);
    
            toolbar.setTitle(R.string.home_page);
            toolbar.setTitleTextColor(getResources().getColor(android.R.color.white));
        }
    }
    
    

    zhihu_toolbar_menu.xml 菜单

    
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <item
            android:id="@id/action_search"
            android:icon="@mipmap/ic_search"
            android:title="@string/menu_search"
            app:showAsAction="ifRoom" />
    
        <item
            android:id="@id/action_notification"
            android:icon="@mipmap/ic_notifications"
            android:title="@string/menu_notifications"
            app:showAsAction="ifRoom" />
    
        <item
            android:id="@id/action_settings"
            android:orderInCategory="100"
            android:title="@string/menu_settings"
            app:showAsAction="never" />
    
        <item
            android:id="@id/action_about"
            android:orderInCategory="101"
            android:title="@string/menu_about_us"
            app:showAsAction="never" />
    </menu>
    
    

    activity_zhi_hu.xml 布局

    
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/color_0176da"
            android:theme="@style/Theme.ToolBar.ZhiHu">
    
        </android.support.v7.widget.Toolbar>
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/white">
    
            <ImageView
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_centerInParent="true"
                android:background="@mipmap/ic_zhihu_logo" />
        </RelativeLayout>
    
    </LinearLayout>
    
    

    styles.xml 中的 Theme.ToolBar.ZhiHu,给 Toolbar 设置android:theme用的

    
    <resources>
    
        ...
        ...
    
        <style name="Theme.ToolBar.ZhiHu" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="actionOverflowButtonStyle">@style/ActionButton.Overflow.ZhiHu</item>
        </style>
    
        <style name="ActionButton.Overflow.ZhiHu" parent="android:style/Widget.Holo.Light.ActionButton.Overflow">
            <item name="android:src">@mipmap/ic_menu_more_overflow</item>
        </style>
    
    </resources>
    
    

    最终得到下面这样的效果

    Android5.1上仿知乎主页面效果

    这里在 Toolbar 设置 android:theme="@style/Theme.ToolBar.ZhiHu" 主要是为了替换系统右上角三个点的图标,如果不设置,则会成系统默认主题的样子。

    不设置Theme的效果

    最后,再给知乎的主页面做个小小的优化,它在 Android 4.4 上运行还是能够看到一条黑乎乎的通知栏,为此我把 ToolbarTranslucent System Bar 的特性结合起来,最终改进成下面的效果(附上 Android4.4 和 5.1 上的运行效果)。

    Android4.4上改进版的知乎主页 Android5.1上改进版的知乎主页

    如果你还不知道 Translucent System Bar 的特性怎么使用,请查看我的上一篇文章:Translucent System Bar 的最佳实践

    总结

    关于 Toolbar 的使用就介绍到此,本来是怀着很简单就可以上手的心态来使用,结果发现还是有很多坑需要填。果然还是验证了一句老话

    
    纸上得来终觉浅,绝知此事要躬行
    
    

    对于想要更深的了解 Toolbar 设计的童鞋,也可以看看这篇官网文档(自备梯子)。

    同样,分享即美德,需要源代码的童鞋,请戳:https://github.com/D-clock/AndroidSystemUiTraining

    欢迎关注我的简书,以及:

    相关文章

      网友评论

      • Simon_Zhang:坑3:如果Toolbar设置为setSupportActionBar(myToolbar); 就不用Toolbar去inflateMenu了。而是直接使用
        public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.base_bar_menu, menu);
        return super.onCreateOptionsMenu(menu);
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
        return super.onOptionsItemSelected(item);
        } 不然你的menu显示不出来的。
      • 208859ee915c:感谢楼主分享,可是我用进去不到怎么把那个图片标志设置大点,初学android,低级问题,请多见谅!
      • e2a861e7b761:楼主你好!
        我按照你说的:
        我们在使用 Toolbar 时候需要先隐藏掉系统原先的导航栏,网上很多人都说给Activity设置一个NoActionBar的Theme。但个人觉得有点小题大做了,所以这里我直接在BaseActivity中调用 supportRequestWindowFeature(Window.FEATURE_NO_TITLE) 去掉了默认的导航栏(注意,我的BaseActivity是继承了AppCompatActivity的,如果是继承Activity就应该调用requestWindowFeature(Window.FEATURE_NO_TITLE));
        程序会崩溃,IDE报错说:
        android.util.AndroidRuntimeException: Window feature must be requested before adding content
        e2a861e7b761:已解决,需要写在setContent之前~
      • 3a2b45433221:怎么调整menu顺序啊
      • SharpChen:导航栏应该是手机下面有返回键、Home 键的吧,手机状态栏下面的应该叫标题栏吧?
      • 叮宕:好文.
      • 6881014067ab:写得很详细,赞!
      • 依然范特稀西:博主,改变溢出菜单的颜色直接在style 中添加 android:textColor 属性就好了,actionMenuTextColor 是改变显示在Toolbar 上菜单文字的颜色,可以看一下这篇文章http://www.jianshu.com/p/e2ae6aaff696
      • b5ff8ed22159:楼主上面说ToolBar中的TextView改成Button后,Button的字体也会改变颜色,我试了一下直接修改Button中的textColor就可以了
      • 18c113455469:请问代码动态设置title为什么无效呢,setTitle()等set都没效果
      • 4085cd786c65:如何设置logo的大小呢?
      • 谢尔顿:我把自定义控件TextView换成Button,button的文字颜色没有变色啊
      • 程序员徐公:最近正想学习ToolBar,看了之后很有帮助
      • f7caf29579a0:假如说我要在标题栏上加一个搜索框,可以输入文字的搜索的那种,不是一个简单的搜索图标,toolbar是否还可以达到我的目标?
      • 盛夏的阳光:看到知乎的那张图片“真正的IT男是什么样子的”,于是我就去搜了,看了两个小时。。。希望以后类似的图片能打上马赛克 :worried: :joy:
      • 鱼人孑:当你说到万千头草泥马的时候和你产生了共鸣
      • f62ec4d22bb1:你好,我是新手,我照着你上面的代码写了一下,报了这个异常
        Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class android.support.v7.view.menu.ActionMenuItemView
        请问这个该怎么解决。
      • dcff7f89dc1e:很好,写的不错,很详细,
      • 14a98204c939:博主你好 请问你的的ic_search资源和ic_notification资源是在哪里下载的?
        我自己用的太大了 不知道怎么调整大小,方便的话可以发一下资源的链接吗?~
      • 叶乘风:你好,如果前两个按钮不设置icon而是文字的话,怎么设置其颜色呢?
        叶乘风:@JayZhouFan 谢谢
        依然范特稀西:@叶乘风 在style 中添加 actionMenuTextColor 这个属性,可以参考这篇文章http://www.jianshu.com/p/e2ae6aaff696
      • Irooie:= =大神可不可以转载一下 标明了出处= =和你的名字
        50d009ae1f8d:不知道右上角的三个点的菜单样式好不好替换自定义样式,item1 和item2的能否改变宽度,文本内容编程图标logo
        Irooie:@D_clock :joy:好的 非常感谢
        ec95b5891948:@57b5a4d15271 注明出处和来源即可!
      • 霁雪初晴:受益良多
      • 46feb52ee346:写得非常详细,谢谢,学习了
      • 龙猫跑跑跑:非常感谢,是我看到的最详细的toolbar的教程了
      • 8532478f1357:请教博主你的项目怎么导入到AS中,我怎么才能成功导入?我的AS版本1.5.0,Gradle版本2.8
      • sky琪仔:在toolbar 基础上自定义比较好!毕竟是google的东西
      • err0r:其实右上角溢出菜单不用设置图片的,toolbar设置
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        就是亮颜色的了.
        其实在As中new blank Actiivty就知道官方推荐的做法是怎样,现在推荐的是CoordinatorLayout+AppBarLayout可以实现更好的动画效果,样式也很好控制
        err0r:@Domino_岗 不知道你现在用的AS版本是多少,我在AS1.5中新建一个测试工程,它的默认配置就是白色溢出菜单,内容区和弹出的菜单栏也都是白色。
        或许你可以看一下你的style.xml文件中AppTheme是不是Theme.AppCompat.Light.DarkActionBar,这个属性会影响内容和弹出的菜单栏颜色
        HPKLyw:我试了一下,在toolbar中添加app:popupTheme="@style/ThemeOverlay.AppCompat.Light"这句之后溢出菜单确实变成白色的了,但是内容区和弹出的菜单栏都由原来的白色变成了黑了,请问一下,这个如何解决呢
        ec95b5891948:@err0r :+1: 赞,非常感谢你所提出的建议,我会跟进学习一下,完成后依旧会整理成文章!
      • HelloVass:如果能顺便讲讲 toolbar 动态更新 menu就更好了!ps,个人认为 toolbar 默认的 menu 弹出动画太死板,不能设置弹出位置,不太美观
        SScience:menu的样式什么的,不是MD指导里写好的?
        HelloVass:@D_clock 我童鞋是这么实现的,点击 Toolbar 上 overflow 按钮的时候用 popwindow 弹出 menu(模仿系统的 menu),这样定制性更强,而且比较美观 :smile: 。如果,更新的话,希望能加上如何实现这种效果。ps,他们的产品叫 “云集”,可以下载下来仔细观察下他们的 Toolbar 交互
        ec95b5891948:@HelloVass 嗯,多谢你提的建议,近期在做 NavigationDrawer 特性的研究,这个接下来有空会跟进研究一下! :grin:
      • 我姓连:最小高度 必须是56dp 不然内容上下不居中,这个真的很头大。。。。
        我姓连:@丶菁华浮梦 style 设置actionbarsize 为10dp, 编写布局 预览有效,大小为10dp 。但是运气手机上面 无效,依旧显示56dp
        e3e03b041a20:@D_clock爱吃葱花 可以通过设置style中的android:actionBarSize属性来自定义toolbar的高度
        ec95b5891948:@请不要阻止我的变态 这个是系统的限制,或者可以考虑一下重写此控件!
      • 1琥珀川1:如果我要title文字居中显示 右边一个返回btn 左边一个发布按钮 这样的需求用Toolbar能实现吗
        HolenZhou:在toolBar中添加一个TextView控件,就是文中“clock”所在的控件,toolBar没有提供设置中间title的api的
        1琥珀川1:没有找到对应的让title文字居中的api 还有右边的meau动态改变Toolbar也不能实现
        ec95b5891948:@streamimg 完全可以啊,你可以自己实践一下!
      • C_zx:很详细
      • 罗永慧:很不多
      • 虚无void:不错,不过大部分还是自定义标题栏。。。
        ec95b5891948: @zerovoid 是的,总是需要一个过度阶段的。

      本文标题:Android开发:最详细的 Toolbar 开发实践总结

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