比ActionBar更好用的Tollbar

Posted good-good-study-cl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比ActionBar更好用的Tollbar相关的知识,希望对你有一定的参考价值。

比ActionBar更好用的Tollbar

ActionBar

  • ActionBar是每个活动的标题栏控件。
  • 由于设计问题ActionBar被限制,只能在活动的顶部

Tollbar

  • Tollbar是Material的一个控件。
  • Tollbar的好用之处是因为,Tollbar是继承于ActionBar的,拥有ActionBar所有功能的基础上提高了自身的灵活性,配合其他控件完成一些Material Design[^ 1]效果

使用Tollbar

  • 一个新的项目默认是ActionBar

让Tollbar直观效果更明显

? 在res/values/styles.xml中修改一个name为APPTheme的样式,指定parent的主题为淡色主题,通常有两个值

Theme.AppCompat.NoActionBar(深色主题)和Theme.AppCompat.Light.NoActionBar(淡色主题)

Tollbar替换ActionBar

在activity_main.xml文件添加appcomat-v7库的Tollbar控件

<androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"<!--高度设置为ActionBar的高度-->
                android:background="?attr/colorPrimary"//<!--背景色设置为colorPrimary-->
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"<!--Tollbar主题-->
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/><!--弹出来的菜单项淡色主题-->

修改MainActivity.java文件

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);//获取Toolbar的实例
        setSupportActionBar(toolbar);//调用方法传入toolbar
    }

此时Tollbar和ActionBar就一样了。
技术图片

在Tollbar上修改标题名字

修改标题名字,AndroidManifest.xml文件的activity标签中添加android:label="标题名字"。

给Tollbar添加一些action按钮

  1. 准备几张要添加的矢量图(推荐阿里巴巴矢量图库下载)保存在drawable目录下。
  2. 在res下新建一个menu文件夹目录,右击menu文件夹new一个Menu resource file
  3. 创建一个tollbar.xml文件,添加代码
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/info"
        android:icon="@drawable/info"
        android:title="Info"
        app:showAsAction="always"/><!--always表示永远显示在Toolbar中,屏幕不够不显示-->
    <item
        android:id="@+id/delete"
        android:icon="@drawable/delete"
        android:title="Delete"
        app:showAsAction="ifRoom"/><!--ifroom表示屏幕空间足够的话显示,不够则显示在菜单中,
                                        never表示永远显示在菜单中-->
</menu>
  1. MainActivity.java添加点击事件代码,这里我只添加测试按钮有没有用的代码,具体逻辑可以依情况修改。
   @Override
       public boolean onOptionsItemSelected(@NonNull MenuItem item) {
           switch (item.getItemId()){
               case R.id.info:
                   Toast.makeText(this,"info",Toast.LENGTH_SHORT).show();
                   break;
               case R.id.delete:
                   Toast.makeText(this,"delete",Toast.LENGTH_SHORT).show();
                   break;
                   default:
           }
           return true;
       }

技术图片

好了,代码写到这,可以运行看看了,Toolbar的基本功能就先说到这了,欢迎各路大神指点。

[^ 1]: Material Design是谷歌设计的一套界面设计原则

以上是关于比ActionBar更好用的Tollbar的主要内容,如果未能解决你的问题,请参考以下文章

使用 ActionBar 旋转 Android 的双片段

显示 ActionBar 选项卡的两个片段

使用androidx获取片段内的actionBar

ActionBar的后退主页按钮无法使用片段

从android中的片段更改自定义ActionBar标题

启动片段时隐藏ActionBar