Toolbar的使用

本次内容主要讲解Android Toolbar的使用及相关注意事项。
Toolbar作为ActionBar的拓展,被用于应用布局中,ActionBar是传统Activity的不透明窗口装饰框架控制的一部分不够灵活,您可能会对它产生厌烦,甚至不如自定义一个类似ActionBar那样的布局来替代它。后来v7带来了Toolbar,Toolbar可以嵌套于各个层次之中,只要你需要它时。要比ActionBar灵活多了,你可以将其布局的底部,中间等等任意位置,无需像actionbar那样固定于顶部。或许你会喜欢上Toolbar。一个应用可以选择设计一个Toolbar作为Activity的a、ActionBar使用,通过setSupportActionBar()方法。
Toolbar比起ActionBar支持更多的特性。从开始到结束,ToolBar可以包含下列可选元素的组合:

**- 一个导航按钮;

  • 一个Logo图标:你可以延长其任意的高和宽;

  • 一个标题和子标题;

  • 一个或更多自定义的views:你可以向Toobar添加任意子视图,并展现于此布局中。如果一个子视图设置了在Toobar的Gravity为CENTER_HORIZONTAL,则所有其他元素被测量后,该视图将尝试显示在工具栏中的可用空间中的中心;

  • 一个活动菜单:可以设置为溢出式的。**

接下来我们来看看Toolbar的使用:
我们新建一个应用,在主布局中添加如下布局代码:

<android.support.v7.widget.Toolbar
        android:id="@+id/main_actionbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="50dp"
        android:background="@color/colorAccent"/>

背景设置的是粉红色。
需要注意的是,你需要确保项目中右android.support.v7的jar包。
然后在代码中如下设置:

Toolbar toolbar = (Toolbar) findViewById(R.id.main_actionbar);
    toolbar.setLogo(R.mipmap.ic_launcher);
    setSupportActionBar(toolbar);

还需一步重要的布局,就是将原始的ActionBar移除掉:
可以在Manifests中设置
android:theme=”@style/Theme.AppCompat.Light.NoActionBar”
好了,这样就是Toolbar的简单使用,看看效果:
这里写图片描述
看到在布局中设置的paddingTop=“50dp”起作用了。Toolbar被拉伸了,同样你可以任意的设置其他方向的拉伸。
添加一个导航按钮
需添加如下代码,即可实现。

toolbar.setNavigationIcon(R.drawable.back);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //你要做的事
    }
});

看看效果:
这里写图片描述
添加一个菜单:

toolbar.setOnCreateContextMenuListener(this);

并且重新菜单的方法

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

其中menu可自行编写,不再赘述。
看看效果
这里写图片描述这里写图片描述
可是你有没发现,这弹出的菜单把导航栏遮住了,也不美观。那么如何让它显示在下面呢,我们继续。。。
将Manifasts中的主题改为

android:theme="@style/AppTheme"

并且修改style中原有的属性:

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!--window背景颜色  设置蓝色-->
        <item name="android:windowBackground">@color/colorPrimary</item>
        <!--设置菜单的样式-->
        <item name="actionOverflowMenuStyle">@style/menuStyle</item>
    </style>
    <!--设置为溢出式的-->
    <style name="menuStyle" parent="@style/Widget.AppCompat.Light.PopupMenu.Overflow">
        <item name="overlapAnchor">false</item>
    </style>

好了,再来运行一下,奇迹出现了
这里写图片描述

这里写图片描述
发现,这变化好大有没有。菜单溢出显示了。
归功于parent=”@style/Widget.AppCompat.Light.PopupMenu.Overflow”的设置;
最顶部的颜色也变成了蓝色且背景主色也变成了蓝色,这主要归功于name=”android:windowBackground”;

好了,就到这里,欢迎围观。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值