Material Design 是 Google 推出的视觉语言,强调界面元素的材料化造型、阴影、动画等效果,以及基于用户通过触摸、鼠标、手势等输入方式进行交互的设计风格。在 Material Design 中,Toolbar 控件是极其重要的组件之一,本文将详细介绍 Toolbar 的使用方法。
1. Toolbar 的基本介绍
Toolbar 是多种 Android 和 Web 应用程序中的重要组件,通常显示应用程序的标题(标题文本图标)、标题栏、应用程序操作和导航按钮。在 Material Design 中,Toolbar 是实现应用程序品牌标识、导航和操作的主要方式。
Toolbar 的基本布局类似于一个普通的 ActionBar,但是 Toolbar 的可定制性更强,功能也更加齐全。它可以包含一个应用图标、一个应用名称和一个名为菜单按钮(也称作溢出菜单按钮)的组件,以及其他自定义的视图(如搜索框)。
2. 创建 Toolbar
Toolbar 的创建一般有两种方式,一种是静态创建,即在 XML 布局文件中创建,另外一种是动态创建。下面我们分别来看这两种方式的实现方法。
2.1 静态创建 Toolbar
在 XML 布局文件中,我们可以通过在顶层使用 android.support.v7.widget.Toolbar
标签来创建 Toolbar。
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" />
其中 android:id
属性用于给 Toolbar 命名,方便在代码中进行引用。android:background
属性指定 Toolbar 背景颜色,app:popupTheme
属性装饰菜单弹出框的样式。
2.2 动态创建 Toolbar
在 Java 代码中,我们可以通过以下代码来动态地创建 Toolbar。
Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);
其中 findViewById
方法的参数是所创建的 Toolbar 的 id。setSupportActionBar
方法设置 Toolbar 为应用程序的主支持操作栏。如果我们要通过代码来操作 Toolbar,则需使用以下代码获取 Toolbar 实例。
Toolbar toolbar = getSupportActionBar();
3. 使用 Toolbar
Toolbar 的使用方法虽然简单,但是却十分灵活,下面的示例代码将演示如何使用 Toolbar。
3.1 操作按钮
Toolbar 的操作按钮位置在 Toolbar 最右侧。我们可以通过以下方式来为 Toolbar 添加操作按钮。
<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="@drawable/ic_search" android:title="@string/action_search" app:showAsAction="always" /> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" /> </menu>
在这个菜单文件中,我们定义了两个操作按钮,app:showAsAction
属性指定了该项应如何显示。对于 always
选项,该项将始终显示在 Toolbar 中;对于 never
选项,该项将始终显示在溢出菜单中。
在 Java 代码中,我们需要使用以下代码来连接 Toolbar 和上面的菜单文件。
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.toolbar_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } else if (id == R.id.action_search) { return true; } return super.onOptionsItemSelected(item); }
在这个示例代码中,onCreateOptionsMenu
方法在 Toolbar 中添加操作菜单,onOptionsItemSelected
方法在点击菜单项时执行相应操作。
3.2 溢出菜单
Toolbar 的溢出菜单是菜单中没有充足空间时自动隐藏的菜单。在前面的菜单文件中,app:showAsAction
的值为 never
的菜单将会出现在溢出菜单中。
我们需要使用以下代码来强制溢出菜单出现在 Toolbar 中。
<item android:id="@+id/action_overflow" android:icon="@drawable/ic_overflow" android:title="@string/action_overflow" app:showAsAction="always"> <menu> <item android:id="@+id/action_item1" android:title="@string/action_item1"/> <item android:id="@+id/action_item2" android:title="@string/action_item2"/> <item android:id="@+id/action_item3" android:title="@string/action_item3"/> </menu> </item>
在这个示例代码中,最外层的菜单项显示了溢出菜单按钮,通过在最外层菜单项中嵌套菜单,我们可以在溢出菜单中添加更多的菜单项。
在 Java 代码中,我们需要使用以下代码来检测溢出菜单中的菜单项的点击事件。
@Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_overflow) { PopupMenu popup = new PopupMenu(this, findViewById(R.id.action_overflow)); popup.getMenuInflater().inflate(R.menu.popmenu, popup.getMenu()); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_item1) { return true; } else if (id == R.id.action_item2) { return true; } else if (id == R.id.action_item3) { return true; } return false; } }); popup.show(); } return super.onOptionsItemSelected(item); }
在这个示例代码中,PopupMenu
类用于显示和控制溢出菜单项检测其点击事件,为此我们需要注册 OnMenuItemClickListener
事件,以便在点击菜单项时执行相应操作。
4. 总结
本文介绍了 Material Design 中的 Toolbar 控件,包括 Toolbar 的基本介绍、创建方式、使用方法,以及如何添加操作按钮和溢出菜单。Toolbar 控件使用灵活,功能齐全,在 Android 和 Web 应用程序中都得到广泛的应用。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a4dec9add4f0e0ffd386c6