Toolbar使用

Toolbar的由来:

由于Android的原生控件给用户带来的UI体验并不是非常完美的,这个其实就是与IOS对比的结果。所以Google的工程师就开发一系列的优美的控件效果Material Design。Toolbar就是其中的一个。

Toobar的使用

1.隐藏原生的ActionBar

每当我们去新建一个APP项目的时候,系统都会给我们一个原生的标题栏。这个原生的标题栏是一个ActionBar。不过由于ActionBar的设计原因,它只能被用于活动的顶部。所以官方不再推荐使用ActionBar,而是使用Toolbar去替代它。既然不用它了我们就要把它隐藏。修改它你要先打开项目下res/values/styles.xml文件。修改它

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

使用不带ActionBar的主题有两种:

淡色主题:

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

深色主题:

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

2.添加Toolbar控件

在你的布局文件中添加Toolbar控件。

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:text="@string/app_name"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"></android.support.v7.widget.Toolbar>

3.去活动中获取你的Toolbar控件

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

4.美化你的Toolbar

(1)在res文件下创建menu菜单添加布局文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/backup"
        android:icon="@drawable/ic_backup_black_24dp"
        android:title="Backup"
        <!--选项总是显示-->
        app:showAsAction="always"/>
    <item
        android:id="@+id/delete"
        android:icon="@drawable/ic_delete_black_24dp"
        android:title="Delete"
        <!--如果Toolbar上有控件就放上去,放不上去就放在扩张菜单-->
        app:showAsAction="ifRoom"/>
    <item
        android:id="@+id/setting"
        android:title="Setting"
        <!--将选项放在扩展菜单里-->
        app:showAsAction="never"/>
</menu>

(2)加载菜单

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

(3)为选项添加点击监听事件

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.backup:
            Toast.makeText(this,"你点击了",Toast.LENGTH_SHORT).show();
            break;
        case R.id.delete:
            Toast.makeText(this,"你点击了",Toast.LENGTH_SHORT).show();
            break;
        case R.id.setting:
            Toast.makeText(this,"你点击了",Toast.LENGTH_SHORT).show();
            break;
        case android.R.id.home:
            drawerLayout_setting.openDrawer(Gravity.START);
            break;
    }
    return true;
}

效果:

Toolbar使用