菜单标题文字

Toolbar比较常用的功能-自定义菜单修改标题栏上显示的文字内容

修改标题文字

通过给 Activity 设置 android:label 属性来指定 Toolbar 中显示的文字内容。若未指定,则默认使用 Application 中定义的 android:label(即应用名称)。

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="Fruits">
        ...
    </activity>
</application>Code language: HTML, XML (xml)

创建菜单资源文件

准备图标图片放入 drawable-xxhdpi 目录。在 res 目录下新建 menu 文件夹,并创建 toolbar.xml 菜单资源文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/backup"
        android:icon="@drawable/back"
        android:title="Backup"
        app:showAsAction="always" />
    <item
        android:id="@+id/delete"
        android:icon="@drawable/del"
        android:title="Delete"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/settings"
        android:icon="@drawable/settings"
        android:title="Settings"
        app:showAsAction="never" />
</menu>Code language: HTML, XML (xml)

说明:使用 app:showAsAction 是为了兼容低版本系统。showAsAction 属性常用取值:

  • always:永远显示在 Toolbar 中(空间不够可能不显示)。
  • ifRoom:空间足够时显示在 Toolbar 中,不够则收进菜单。
  • never:永远隐藏在右侧溢出菜单中(只显示文字)。
    注意:Toolbar 上的 action 按钮只显示图标,菜单中的只显示文字。

在活动中加载菜单并处理点击事件

修改 MainActivity 代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.toolbar, menu);
    return true;
} 

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.backup:
            Toast.makeText(this, "You clicked Backup", Toast.LENGTH_SHORT).
                    show();
            break;
        case R.id.delete:
            Toast.makeText(this, "You clicked Delete", Toast.LENGTH_SHORT).
                    show();
            break;
        case R.id.settings:
            Toast.makeText(this, "You clicked Settings", Toast.LENGTH_SHORT).
                    show();
            break;
        default:
    }
    return true;
}Code language: JavaScript (javascript)

运行效果说明

  • Backup 按钮(always)和 Delete 按钮(ifRoom,当前空间充足)直接显示在 Toolbar 上。
  • Settings 按钮(never)隐藏在右侧菜单按钮展开的菜单项中。
  • 点击各 action 按钮均可触发对应的 Toast 提示响应。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注