Android Toolbar使用(一)

作者: 年华_零落成诗 | 来源:发表于2017-04-22 23:45 被阅读345次

    1 概述

    Android ToolBar是Google在Android L提出来的,主要用于代替3.0的ActionBar

    2 说明

    根据官方的说法,ToolBar有两种使用方法:一种是做为ActionBar使用,一种是单独使用

    3 使用

    1.因为要兼容5.0之前的设备,所以我们要使用v7包下的ToolBar,首先依赖V7包:

    compile'com.android.support:appcompat-v7:25+'
    

    2.去掉ActionBar,在style里面改:

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

    3.创建一个ToolBar并设置一个背景

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:background="@color/colorPrimary"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    

    4.获取ToolBar

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    //设置成actionbar
    setSupportActionBar(toolbar);
    

    5.现在应该是这个样子的:



    6.如何使用?
    这时候再使用toolbar.setXXX有可能会失败,比如先设置个标题:

            //设置标题
            toolbar.setTitle("标题");
    

    这时候会发现他并没有变化,仍然是之前的样子,继续:

     //设置副标题
     toolbar.setSubtitle("副标题");
    toolbar.setSubtitleTextColor(Color.WHITE);
    

    这时候变成了:



    这个属性是管用的,继续:

           //设置标题
            toolbar.setTitle("标题");
            //设置标题颜色
            toolbar.setTitleTextColor(Color.WHITE);
            //设置副标题
            toolbar.setSubtitle("副标题");
            //设置副标题颜色
            toolbar.setSubtitleTextColor(Color.WHITE);
            //设置logo
            toolbar.setLogo(R.mipmap.ic_launcher_round);
            //设置返回图标
            toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp);
            //返回事件
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
            //设置菜单
            toolbar.inflateMenu(R.menu.menu);
    

    这时候变成了:



    发现大多数属性是可以用的,但是有些属性,比如menu并没有设置成功,所以,当设置成ActionBar的时候,应该这样使用:

            ActionBar actionBar = getSupportActionBar();
            //设置标题
            actionBar.setTitle("标题");
            //设置副标题
            actionBar.setSubtitle("副标题");
            //设置logo
            actionBar.setLogo(R.mipmap.ic_launcher_round);
            //显示返回按钮
            actionBar.setDisplayHomeAsUpEnabled(true);
            //设置返回按钮图片
            actionBar.setHomeAsUpIndicator(R.drawable.ic_arrow_back_black_24dp);
    

    这时候应该是:



    而返回按钮的点击事件应该这样:

     // 重写
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
         return true;
        }
    //重写
     @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()){
                case android.R.id.home:
                    finish();
                    break;
            }
            return super.onOptionsItemSelected(item);
        }
    

    ActionBar是无法设置标题颜色的,所以最好的使用方法应该是这样:

    
            toolbar = (Toolbar) findViewById(R.id.toolbar);
            //设置标题
            toolbar.setTitle("标题");
            //设置标题颜色
            toolbar.setTitleTextColor(Color.WHITE);
            //设置副标题
            toolbar.setSubtitle("副标题");
            //设置副标题颜色
            toolbar.setSubtitleTextColor(Color.WHITE);
       //写在设置标题的后边
            //设置成actionbar
            setSupportActionBar(toolbar);
            //设置logo
            toolbar.setLogo(R.mipmap.ic_launcher_round);
    
            //设置返回图标
            toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp);
            //返回事件
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
    

    这时候是:


    添加Menu

    创建一个menu

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <item
            android:id="@+id/search"
            android:title="搜索"
            android:icon="@drawable/ic_search_black_24dp"
            app:showAsAction="always"/>
        <item
            android:id="@+id/edit"
            android:title="编辑"
            android:icon="@drawable/ic_edit_black_24dp"/>
        <item
            android:id="@+id/contacts"
            app:showAsAction="ifRoom"
            android:title="联系人"
            android:icon="@drawable/ic_account_box_black_24dp"/>
    </menu>
    

    加载menu:

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()){
                case R.id.search:
                    Toast.makeText(this,"搜索",Toast.LENGTH_SHORT).show();
                    break;
                case R.id.contacts:
                    Toast.makeText(this,"联系人",Toast.LENGTH_SHORT).show();
                    break;
                case R.id.edit:
                    Toast.makeText(this,"编辑",Toast.LENGTH_SHORT).show();
                    break;
            }
            return super.onOptionsItemSelected(item);
        }
    

    这时候就变成了



    OK,就是这样了~~~

    相关文章

      网友评论

        本文标题:Android Toolbar使用(一)

        本文链接:https://www.haomeiwen.com/subject/piaszttx.html