Android30--Android之Toolbar

继之前的一篇讲到ActionBar,目前对于ActionBar,由于不容易修改他的样式,所以Android5.0之后,他的升级版Toolbar出来了..今天就来简单介绍一下Toolbar

1.Toolbar的使用

首先在实现Toolbar之前,我们一定要实现的三步:
1. findViewById找到我们Toolbar
2. setSupportActionBar(mToolbar);
3. 定义我们的样式为NoActionBar

最简单的Toolbar

 <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
          >
           <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        // 会取到actionBarSize中的对应的一个值, 会自适应Toolbar的高度
        android:layout_height="?actionBarSize"
        // 定义溢出的菜单的样式.我们也可以自定义一个Theme,设置溢出的菜单的颜色等等.
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        >
    </android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>

2.一个更详细的内容:

在用Toolbar时,涉及到很多没有解决的问题:
通过一些网上查找,感觉到内容实在是很多啊,所以就把人家的网址直接拷贝过来了,学习学习..
涉及到的问题大约有:
1.为Activity设置没有Actionbar
一种方式是supportRequestWindowFeature(Window.FEATURE_NO_TITLE);但有很重要的一点是:这句话必须在setContentView(R.layout.activity_toolbar);**之前执行.** 但是,这样会很不稳定,因为在setContentView的时候,会找Activity的ActionBar.所以,这样设置,有时候显示有时候会不显示,有时候也会崩..
另一种方式是为Activity在style文件中自定义一个主题(…NoActionBar)
2.在设置navigationlogo,logo,title,subTitle等,可以在java代码中,设置,也可以在Toolbar的xml文件中设置,但是有个大坑啊,具体什么,我们可以查看下面这个网址,会有很详细的解释.
3.它在 Android 4.4,5.1 上运行还是能够看到一条黑乎乎的通知栏,具体的解决方案,是使用到了Translucent System Bar
http://blog.csdn.net/u012954720/article/details/52629384
最详细的 Android Toolbar 开发实践总结
http://blog.csdn.net/u012954720/article/details/52629375

3.标题和ListView一起滑动的效果

对于我们刷新listView,上面的bar会跟着一起滑动,实现很炫的效果,我们使用android.support.v4.widget.NestedScrollView来实现的.

<!--只有这个布局才能实现bar和内容同时滑动-->
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <android.support.design.widget.AppBarLayout
        style="@style/ThemeOverlay.AppCompat.ActionBar"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        >

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            // 
            app:layout_scrollFlags="scroll|enterAlways">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="首页"
                android:textSize="20sp"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?actionBarSize"

                app:layout_collapseMode="parallax"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                >
            </android.support.v7.widget.Toolbar>
        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

<android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        // 实现和bar滑动的行为
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        >
         <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
        .....可以是TextView
     </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
    </android.support.design.widget.CoordinatorLayout>

它具有ScrollView的特性,只允许添加一个控件.
详细的CoordinatorLayout布局的使用方式:详见
http://blog.csdn.net/u012954720/article/details/52634398

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值