Android导航控件之Toolbar

简介

Toolbar是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 用来取代之前的 Actionbar

Toolbar支持:

  • 设置导航栏图标
  • 设置App的logo
  • 支持设置标题和子标题
  • 支持添加一个或多个的自定义控件
  • 支持Action Menu

实践说明

默认情况下Activity是有一个ActionBar的

如何删除这个ActionBar呢?

首先在styles文件中自定义一个style

    

然后在对应Activity清单文件中配置

  

第一种样式

布局文件





    

        

    


FirstToolbarActivity.java

package com.zhoujian.toolbar;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

/**
 * Created by zhoujian on 2017/3/8.
 */

public class FirstToolbarActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        initView();
    }

    private void initView()
    {

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

        // 设置navigation button 点击事件
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

        //设置menu
        toolbar.inflateMenu(R.menu.menu_item);
        // 设置溢出菜单的图标
        toolbar.setOverflowIcon(getResources().getDrawable(R.mipmap.icon_menu));
        // 设置menu item 点击事件
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()){
                    case R.id.item_collect:
                        //点击设置
                        Toast.makeText(FirstToolbarActivity.this, "按钮被点击了", Toast.LENGTH_SHORT).show();
                        break;

                    case R.id.item_talk:
                        //点击设置
                        Toast.makeText(FirstToolbarActivity.this, "发起群聊点击了", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.item_add:
                        //点击设置
                        Toast.makeText(FirstToolbarActivity.this, "添加朋友被点击了", Toast.LENGTH_SHORT).show();
                        break;

                }
                return false;
            }
        });

    }
}

显示效果:

Android导航控件之Toolbar_第1张图片
a.png

第二种样式

布局文件





    


        
        
    
    

SecondToolbarActivity.java

package com.zhoujian.toolbar;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

/**
 * Created by zhoujian on 2017/3/8.
 */

public class SecondToolbarActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        initView();
    }

    private void initView()
    {

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

        // 设置navigation button 点击事件
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });


        //设置menu
        toolbar.inflateMenu(R.menu.menu_item);
        // 设置溢出菜单的图标
        toolbar.setOverflowIcon(getResources().getDrawable(R.mipmap.icon_menu));
        // 设置menu item 点击事件
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()){
                    case R.id.item_collect:
                        //点击设置
                        Toast.makeText(SecondToolbarActivity.this, "按钮被点击了", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.item_talk:
                        //点击设置
                        Toast.makeText(SecondToolbarActivity.this, "发起群聊点击了", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.item_add:
                        //点击设置
                        Toast.makeText(SecondToolbarActivity.this, "添加朋友被点击了", Toast.LENGTH_SHORT).show();
                        break;
                }
                return false;
            }
        });

    }
}

显示效果:

Android导航控件之Toolbar_第2张图片
b.png

第三种样式

布局文件




    
    
        
    

ThirdToolbarActivity.java

package com.zhoujian.toolbar;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

/**
 * Created by zhoujian on 2017/3/8.
 */

public class ThirdToolbarActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);
        initView();
    }

    private void initView()
    {

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

        // 设置navigation button 点击事件
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });


        //设置 Toolbar menu
        toolbar.inflateMenu(R.menu.toolbar_menu);
        // 设置溢出菜单的图标
        toolbar.setOverflowIcon(getResources().getDrawable(R.mipmap.icon_menu));
        // 设置menu item 点击事件
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()){
                    case R.id.publish:
                        //点击设置
                        Toast.makeText(ThirdToolbarActivity.this, "发布按钮被点击了", Toast.LENGTH_SHORT).show();
                        break;


                }
                return false;
            }
        });

    }
}


显示效果:

Android导航控件之Toolbar_第3张图片
c.png

第四种样式

布局文件



    
    

        

    


FourthToolbarActivity.java


package com.zhoujian.toolbar;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

/**
 * Created by zhoujian on 2017/3/8.
 */

public class FourthToolbarActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_four);
        initView();
    }

    private void initView()
    {

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

        // 设置navigation button点击事件
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });


        //设置menu
        toolbar.inflateMenu(R.menu.menu_search);
        // 设置溢出菜单的图标
        toolbar.setOverflowIcon(getResources().getDrawable(R.mipmap.icon_menu));
        // 设置menu item 点击事件
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()){
                    case R.id.item_search:
                        //点击设置
                        Toast.makeText(FourthToolbarActivity.this, "搜索按钮被点击了", Toast.LENGTH_SHORT).show();
                        break;

                }
                return false;
            }
        });

    }
}

显示效果:

Android导航控件之Toolbar_第4张图片
d.png

源码下载

源码下载:https://github.com/zeke123/Toolbar

你可能感兴趣的:(Android导航控件之Toolbar)