ToolBar比ActionBar更加可控,自由。因此,Google 逐渐使用ToolBar来代替ActionBar。

使用ToolBar

1.要引入appCompat_v7支持

2.主题设置为NoActionBar

在style.xml文件中

 <style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!--ToolBar颜色-->
<item name="colorPrimary">@color/colorBlack</item>
<!--状态栏颜色-->
<item name="colorPrimaryDark">@color/colorBlack</item>
<!--窗口的背景色-->
<item name="android:windowBackground">@color/colorWhite</item>
<!--add searchView-->
<item name="searchViewStyle">@style/MySearchView</item>
<item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item> </style>
<style name="MySearchView" parent="Widget.AppCompat.SearchView"/>
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:21.0.3'
}

界面布局

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

请记得用 support v7 里的 toolbar,不然然只有 API Level 21 也就是 Android 5.0 以上的版本才能使用。

程序代码:

toolbar=(Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("主标题");
toolbar.setSubtitle("副标题");
toolbar.setLogo(R.mipmap.ic_launcher);
setSupportActionBar(toolbar);//把toolbar当成actionBar使用

菜单配置

<?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/action_search"
android:orderInCategory=""
android:title="@string/tv_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/action_share"
android:orderInCategory=""
android:title="@string/tv_share"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/action_error_ques"
android:orderInCategory=""
android:title="@string/tv_error_ques"
app:showAsAction="never"
android:icon="@mipmap/error_prac_icon" />
<item
android:id="@+id/action_collected_ques"
android:orderInCategory=""
android:title="@string/tv_collection_ques"
app:showAsAction="never"
android:icon="@mipmap/memu_colle_prac_icon"
/>
</menu>
    • orderInCategory
      设置菜单项的排列顺序,必须设置大于等于0的整数值。数值小的排列在前,如果值相等,则按照xml中的顺序展现。
    • title
      菜单项的标题。
    • icon
      菜单项的图标。
    • showAsAction
      该属性有五个值,可以混合使用。
      • always
        总是显示在Toolbar上。
      • ifRoom
        如果Toolbar上还有空间,则显示,否则会隐藏在溢出列表中。
      • never
        永远不会显示在Toolbar上,只会在溢出列表中出现。
      • withText
        文字和图标一起显示。
      • collapseActionView
        声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。一般要配合ifRoom一起使用才会有效。
  @Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.memu_prac_toolbar,menu);
return true;
}

菜单单击事件

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.action_error_ques:
startActivity(new Intent(MainActivity.this, ErrorActivity.class));
break;
case R.id.action_collected_ques:
startActivity(new Intent(MainActivity.this, CollectedActivity.class));
break;
default:
return false;
}
return true;
}

在此引用某博客的一张图以及该博客对其的解释

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2006.html

  1. setNavigationIcon
    即设定 up button 的图标,因为 Material 的介面,在 Toolbar这里的 up button样式也就有別于过去的 ActionBar 哦。

  2. setLogo
    APP 的图标。

  3. setTitle
    主标题。

  4. setSubtitle
    副标题。

  5. setOnMenuItemClickListener
    设定菜单各按鈕的动作。

// Navigation Icon 要設定在 setSupoortActionBar 才有作用

其余的明天继续写。

Android的ToolBar的更多相关文章

  1. android:ToolBar详解

    android:ToolBar详解(手把手教程) 泡在网上的日子 发表于 2014-11-18 12:49 第 124857 次阅读 ToolBar 42 来源 http://blog.mosil.b ...

  2. Android 自定义ToolBar详细使用

    自定义xml设置ToolBar,通过menu文件扩展选项,通过继承baseactivity使用 1.ToolBar布局 <?xml version="1.0" encodin ...

  3. Android之Toolbar的三个问题:修改左边箭头颜色、怎样修改右边以及子activity中的toolbar添加返回箭头

    1)怎样修改左边这个小箭头的颜色? 2)怎样修改右边这三个点的颜色.怎样把这三个点替换成我自己的图标? 3)怎样让"交易清单"这4个字居中显示? 首先设置Theme为AppComp ...

  4. android:ToolBar详解(手把手教程)(转)

    来源 http://blog.mosil.biz/2014/10/android-toolbar/ 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅 ...

  5. [Android Pro] Toolbar的完全自定义

    reference to : http://blog.csdn.net/elder_sword/article/details/46634751 Toolbar是什么,不知道的可以去大神的博客瞻仰下 ...

  6. android:ToolBar详解(手把手教程)

    今年(2014) 的 google i/o 发表令多数人为之一亮的 material design,而 google 也从「google i/o 2014」 开始,大家也陆陆续续地看到其更新的 and ...

  7. android提供ToolBar实现划动菜单的陷阱

    代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android: ...

  8. Android——使用Toolbar + DrawerLayout快速实现高大上菜单侧滑(转)

    今天就来使用官方支持库来快速实现这类效果,需要使用到Toolbar和DrawerLayout,详细步骤如下:(如果你还不知道这两个Widget,先自己Google吧~) 1.首先需要添加appcomp ...

  9. Android之ToolBar和自定义ToolBar实现沉浸式状态栏

    沉浸式状态栏确切的说应该叫做透明状态栏.一般情况下,状态栏的底色都为黑色,而沉浸式状态栏则是把状态栏设置为透明或者半透明. 沉浸式状态栏是从android Kitkat(Android 4.4)开始出 ...

随机推荐

  1. [CERC2014] Virus synthesis

    设f[i]为形成极长回文串i的最小操作数.答案为min f[i]+n-len[i]. 在不形成偶回文的情况下形成奇回文的最小操作数为该串长度.可以不考虑(但ans赋为len). 正确性基于: 1)奇. ...

  2. update-rc.d: error: XXX Default-Start contains no runlevels, aborting.

    root@hm-saas-db:/etc/init.d# update-rc.d confluence disable update-rc.d: error: confluence Default-S ...

  3. (转)p解决 java.util.prefs.BackingStoreException 报错问题

    原文:https://blog.csdn.net/baidu_32739019/article/details/78405444 https://developer.ibm.com/answers/q ...

  4. MySQL 分支的选择:Percona 还是 MariaDB

    原文:https://www.biaodianfu.com/mysql-percona-or-mariadb.html 在MySQL被Oracle收购以后,越来越多的人对于MySQL的前景表示了担忧, ...

  5. HashMap源码之构造函数--JDK1.8

    构造函数 变量解释 capacity,表示的是hashmap中桶的数量,初始化容量initCapacity为16,第一次扩容会扩到64,之后每次扩容都是之前容量的2倍,所以容量每次都是2的次幂 loa ...

  6. 基础编程复习:输出n以内的所有素数

    暴力遍历:对于1~n以内的每一数i 每一个i只需要考虑2~i开根号以内是否有可以让i整除的数,即(i%x==0)只要满足就不是素数 否则输出 #include<iostream> #inc ...

  7. 编写高质量代码改善java程序的151个建议——[1-3]基础?亦是基础

    原创地址:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),需要转载的,保留下! Thanks The reasonable man adapts himse ...

  8. Python中的可变、不可变对象和赋值技巧序列解包

    可变对象和不可变对象 在python中一切皆对象.在Python中不存在所谓的值传递调用,一切传递都是对象的引用,也可认为是传址. python中,对象分为可变(mutable)和不可变(immuta ...

  9. java反射注解妙用-获取所有接口说明

    转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10293490.html 前言 最近在做项目权限,使用shiro实现restful接口权限管理,对整个项目都进 ...

  10. MySQL系列详解八:MySQL多线程复制演示-技术流ken

    前言 Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有 ...