Material Design之Toolbar

来源:互联网 发布:数据网站 编辑:程序博客网 时间:2024/06/04 22:47

修改values/styles.xml文件的代码,隐藏ActionBar

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

修改主界面代码

    <FrameLayout        xmlns:android="http://schemas.android.com/apk/res/android"        xmlns:app="http://schemas.android.com/apk/res-auto"        android:layout_width="match_parent"        android:layout_height="match_parent">        <android.support.v7.widget.Toolbar            android:id="@+id/toolbar"            android:layout_width="match_parent"            android:layout_height="?attr/actionBarSize"            android:background="?attr/colorPrimary"            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />    </FrameLayout>

android:layout_height:将ToolBar的高度设置为ActionBar的高度值

android:theme:将主题设置为深色系主题

为了解决弹出菜单也为深色系很丑的问题,单独设置弹出菜单主题

app:popupTheme:将弹出菜单单独设置为浅色系

在onCreate()方法中设置Toolbar代替ActionBar

    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);    setSupportActionBar(toolbar);

添加菜单到ToolBar

创建一个menu文件夹并且创建一个toolbar.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/backup"        android:icon="@mipmap/icon_backup"        android:title="备份"        app:showAsAction="always" />    <item        android:id="@+id/delete"        android:icon="@mipmap/icon_delete"        android:title="删除"        app:showAsAction="ifRoom" />    <item        android:id="@+id/settings"        android:icon="@mipmap/ic_launcher"        android:title="设置"        app:showAsAction="never" /></menu>

app:showAsAction:用来指定图标出现的时机。有以下几种值可选

    always:永远显示在ToolBar中,如果屏幕空间不够则不显示    ifRoom:如果空间够就显示在ToolBar中,不够就显示在菜单中    never:永远显示在菜单中

【注】ToolBar中只显示 icon,菜单栏中只显示 title

添加到Toolbar

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

设置菜单点击事件

    @Override    public boolean onOptionsItemSelected(MenuItem item){        switch (item.getItemId()){            case android.R.id.backup:                break;            case android.R.id.delete:                break;            case android.R.id.settings:                break;        }        return true;    }

在Toolbar中设置导航按钮

    ActionBar actionBar = getSupportActionBar();    if(actionBar !=null){        actionBar.setDisplayHomeAsUpEnabled(true);  //设置按钮可见        actionBar.setHomeAsUpIndicator(R.mipmap.icon_menu);  //设置按钮图标    }

这个按钮交HomeAsUp按钮,默认图标是一个返回的箭头,含义是返回上一个活动
这个按钮的id为android.R.id.home