Material Design 学习之Toolbar(第二行代码笔记)

来源:互联网 发布:is私聊器软件isqt8 编辑:程序博客网 时间:2024/05/19 20:43

概述

Material Design(以下简称md)是google在2014年的 I/O大会上推出的android设计语言.15年I/O大会上推出了Design support库,这个库将md中最具代表性的一些效果和控件进行了封装,使得开发者可以更方便的来实现md设计语言.OK,开始学习吧!

toolbar

toolbar是用来替代actionbar的。actionbar只能固定在顶部,不能配合完成一些md效果。
toolbar的强大之处在于,他不仅继承了actionbar的所有功能,而且灵活性很高,可以其他来完成一些md效果。

开始学习
我们新建一个项目默认都是显示actionbar的,一般可以在manifest中通过修改theme来去掉actionbar:
这里写图片描述
noActionBar见名知意,light高亮的意思,也就是浅色的主题.这样就可以去除actionBar了.

现在我们已经将actionBar隐藏起来了,下面就使用toolbar来替代actionbar吧.

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

这里我们高度使用actionbar的高度就好,toolbar的颜色直接设置background.由于我们刚才在application那里指定了应用为浅色主题,因此现在toolbar也是浅色主题,而toolbar上的元素就会自动使用深色主题来和主题颜色区分开.我们可以使用theme来为toolbar单独指定主题.popupTheme是来设置菜单的主题的.
命名空间用app:是为了兼容5.0以下.appns快捷键直接生成命名空间.

然后在代码中设置:

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

OK,基本的toolbar效果就完成了….再来看下如何在toolbar上一些比较常用的功能吧.

修改toolbar显示文字
在manifest中的activity下加入label属性来指定toolbar的文字内容,如果没有指定的话默认会使用application中的label属性,也就是我们的APP名字.

添加按钮

在res目录下新建一个menu文件夹,然后新建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/tb_1"        android:icon="@mipmap/ic_launcher"        android:title="text1"        app:showAsAction="always"/>    <item        android:id="@+id/tb_2"        android:icon="@mipmap/ic_launcher"        android:title="text2"        app:showAsAction="ifRoom"/>    <item android:id="@+id/tb_3"          android:icon="@mipmap/ic_launcher"          android:title="text3"          app:showAsAction="never"/></menu>

我们使用item标签来定义action按钮,其中id自不用说,icon表示按钮的图标,title表示按钮的描述文字,showAsAction是决定按钮的显示位置,always是永远显示在toolbar中,ifRoom表示屏幕空间足够的话就显示在toolbar中,不足则显示在菜单中,never表示永远显示在菜单中.显示在toolbar的话只能显示图标没有文字,菜单中只有文字没有图标…然后就是在代码中创建和设置menu了.

在activity中重写onCreateOptionsMenu方法来创建menu

    @Override    public boolean onCreateOptionsMenu(Menu menu) {        //加载我们创建的menu的xml文件        getMenuInflater().inflate(R.menu.toolbar,menu);        return true;    }

重写onOptionsItemSelected来设置menu的点击事件

@Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()){            case R.id.tb_1:                Toast.makeText(this, "text1", Toast.LENGTH_SHORT).show();                break;            case R.id.tb_2:                Toast.makeText(this, "text2", Toast.LENGTH_SHORT).show();                break;            case R.id.tb_3:                Toast.makeText(this, "text3", Toast.LENGTH_SHORT).show();                break;            case android.R.id.home:                mDrawerLayout.openDrawer(GravityCompat.START);                break;        }        return true;    }

暂时先写到这里…总结下就是在manifest中替换主题隐藏actionbar,xml中写toolbar,在activity中setSupportToolBar来让toolbar显示出来.在res中新建menu的资源文件夹以及menu下的xml资源文件,通过item来配置action按钮,重写onCreateOptionsMenu和onOptionsItemSelected来配置toolbar上action按钮的点击事件.

给dalao递茶,jpg
菜鸡一枚,有不对的地方还望dalao们指正.

0 0
原创粉丝点击