ToolBar

ToolBar
Android 3.0 Android 推了 ActionBar。与 Actionbar 相比, Android 5.0 开始推出的一个 Material Design 风格的导航控件 Toolbar 来作为Android客户端的导航栏,Toolbar 明显要灵活的多。它不像 Actionbar 一样,一定要固定在Activity的顶部,而是可以放到界面的任意位置。
比如:这里写图片描述

toolbar的style
首先,明确一下:

    1.colorPrimaryDark :状态栏颜色,在style和Theme中设置
    2.App bar color:
            如果使用actionbar,则直接在style或者theme中设置colorPrimary就可以;
            如果使用toolbar,则在layout中设置toolbar的background属性
    <android.support.v7.widget.Toolbar
        android:id="@+id/main_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        android:background="@color/blue"
        android:elevation="5dp">
    3.navigationBarColor(导航栏底色):
             Android 5 以后的版本中使用, 因此要将之设定在 res/values-v21/styles.xml 里面。

在 res/values/styles.xml中:

<style name="AppTheme" parent="Theme.AppCompat">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

在Android 5.0的style: /res/values-v21/styles.xml中:

<style name="AppTheme" parent="Theme.AppCompat">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:navigationBarColor">@color/accent_material_light</item>
    </style>

toolbar设置
这里写图片描述

重点内容

  1. setNavigationIcon : 设置导航栏图标
  2. setLogo : 设置logo
  3. setTitle : 设置标题
  4. setSubtitle:设置副标题
  5. setOnMenuItemClickListener : 菜单按钮点击事件
 Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar);
        toolbar.setNavigationIcon(R.mipmap.confirm);
        toolbar.setTitle("ToolBar标题");
        toolbar.setSubtitle("ToolBar副标题");
        toolbar.setLogo(R.mipmap.user_checked);
        setSupportActionBar(toolbar);
        toolbar.setOnMenuItemClickListener(menuItemClick);

注意
setTitle方法要在setSupportActionBar()之前调用,不然没有效果;setOnMenuItemClickListener要在setSupportActionBar()之后调用;

toolbar的menu

在res/新建mune文件夹,新建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"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/item_home"
        android:icon="@mipmap/home_checked"
        android:orderInCategory="80"
        android:title="首页"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/item_discovery"
        android:icon="@mipmap/discovery_checked"
        android:orderInCategory="90"
        android:title="发现"
        app:showAsAction="collapseActionView" />
    <item
        android:id="@+id/item_order"
        android:icon="@mipmap/order_checked"
        android:orderInCategory="100"
        android:title="订单"
        app:showAsAction="never" />

</menu>

注意

menu中的item属性orderInCategory是表明摆放的顺序,不一定从0开始计算,但必须大于等于0,建议从0,1,2,3….这样依次给出,并且与XML行文的顺序一致。
app:showAsAction :它是作为aciton bar中的活动选项,可以指定何时或者如何显示
never: 表示不会在 ActionBar的标题栏中去显示了
ifRoom: 可以将这个选项放置在导航栏中,如果它有空间的话。
withText: 可以在导航栏中设置标题,这个标题就是通过 android:title 定义的

toolbar的menu在activity中inflate

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

toolbar menu 点击事件

private Toolbar.OnMenuItemClickListener menuItemClick = new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            String msg = "";
            switch (item.getItemId()) {
                case R.id.item_home:
                    msg = "item_home";
                    break;
                case R.id.item_order:
                    msg ="item_order";
                    break;
                case R.id.item_discovery:
                    msg = "item_discovery";
                    break;
            }

              ToastUtils.showToast(msg,MainActivity.this);
            return true;
        }
    };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值