安卓 Toolbar

Toolbar

简述

Toolbar 在v7.21+包中,是一个用来替代ActionBar的组件,可以说是ActionBar的升级版本。Toolbar与ActionBar比较有几个特点:

  1. ActionBar属于Window的装饰组件,一个activity中只能有一个ActionBar,但是Toolbar属于View级别,可以有任意多个
  2. ActionBar定制困难,Toolbar可以看作一个ViewGroup,可以自由搭配

Toolbar的几个组成与ActionBar差不多,顺序是:

  1. 导航按钮
  2. logo
  3. 标题
  4. 自定义组件
  5. action menu(类似菜单)

使用

替换ActionBar

如果使用的是兼容包,那么依旧必须继承ActionBarActivity,唯一的要点:主题中需要去掉ActionBar。

<style name="V7.Toolbar" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowActionBar">false</item>
</style>

或者

<style name="V7.Toolbar" parent="Theme.AppCompat.Light.NoActionBar">
</style>

代码中用Toolbar替换掉ActionBar即可

    setContentView(R.layout.v7_activity_toolbar);
    Toolbar toolbar = (Toolbar) findViewById(R.id.v7_toolbar_1);
    if (toolbar != null) {
        setSupportActionBar(toolbar);
    }

就是这么简单

实现tab

可以注意点到,ActionBar中的setNavigationMode方法已经被标记为deprecated了,所以想必也是不推荐了。 
Toolbar并没有提供现成的实现,虽然带来了不便,但是赋予了更大的自由。 
只需要在Toolbar的自定义组件部分加入tab组件就可以了,tab组件有很多,google也提供了一个实现SlidingTabLayout。

<android.support.v7.widget.Toolbar

    android:id="@+id/v7_toolbar_2"
    android:layout_width="match_parent"
    android:layout_height="60dp">

    <dev.xesam.android.study.lollipop.v7.toolbar.SlidingTabLayout
        android:id="@+id/v7_sliding_tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</android.support.v7.widget.Toolbar>

实现nav list

同tab,将SlidingTabLayout替换为Spinner就行(老系统可能需要寻找其他组件辅助实现预期效果)

<android.support.v7.widget.Toolbar
    android:id="@+id/v7_toolbar_1"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    app:theme="@style/V7.ToolbarTheme">

    <Spinner
        android:id="@+id/v7_toolbar_spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</android.support.v7.widget.Toolbar>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值