1.2 ActionBar ToolBar

ActionBar  提供了多种UI  主要包括:

1. 一个提供icon显示的区域与当前所处位置的说明

2.以可预测的方法访问搜索等重要操作

3.支持导航和视图切换(通过标签页或者下拉列表)

要求:app必须使用action bar 可用的主题

注意:android2.1 以下版本没有actionBar  需要依赖 support v7 appcompat包

在3.0以上版本直接选择 Theme.Holo的主题即可,action bar 在所有activity就会展现




以下是正式开始:

XML中主题选用 Theme.AppCompat.Light...即可 如果是自定义主题则 父主题要包含actionBar的主题

public class MyActivity extends ActionBarActivity / AppCompatActivity { 

}

actionBar的 所以操作按钮与action overflow都定义在 menu资源的xml中。通过项目的 res/menu 目录中增加 xml 来为action bar添加操作


如图所示

在activity中重写下面方法 来加载xml布局

onCreateOptionsMenu(Menu menu){

MenuInflater menuInflater = getMenuInflater();

menuInflater.inflate(R.menu.activity_bar,menu);

return super.onCreateOptionsMenu( menu );

}

将xml布局添加进menu中

点击事件处理 需要重写

onOptionsItemSelected(MenuItem item){

        switch(item.getItemId()){

                          case R.id.search:

                                   xxxxxxx

                                   return true;

        }

}

如果兼容了Android2.1的版本使用的了 使用了Support库 那么在android命名空间下 shwoAsAction是不可用的 必须在生命自己的xml命名空间,并且使用该命名空间做属性前缀 例如:


比如这样 xmlns : app 也是可以的

shwoAsAction  的4个属性值   alaways : 使设置的item一直显示在actionBar上面  

                                                 ifRoom :如果有足够的空间就将item 显示在actionBar上面

                                                 never    :这个item不出现在 actionBar上面 出现在 overflow 上面 

                                                  withText :这个值使item icno和他的文本一起显示

actionBar上面展示的 item 数量有限 如果放不下 就会自动添加到 overflow上面去

修改actionBar样式 

改变actionBar的样式 可以使用style中 actionBarStyle属性来实现  利用actionBarStyle重新指向另一个样式即可


就是这样


修改actionBar字体颜色 尝试了一波并没有修改成功 不过背景色修改没问题

toolbar /tul/   是对actionBar的一种延续 用于取代actionBar  ToolBar 兼容android 2.1 并能够在所有的设备上提过Material Design体验   actionBar只能在5.0以上是实现(不同版本的actionBar风格多样)  toolBar位于 v7 appcompat包中

向activity中添加工具栏

使用要求: 1. 依赖 v7 appCompat类库

                    2.  Activity extends AppCompatActivity

                     3.在清单文件中设置主题 为NoActionBar类型 避免系统使用原生的actionBar

使用 : 向Activity布局中添加ToolBar  例如  

下图的各种空间都可以用属性设置


Toolbar 的组成成部分   中间红色的 text 为 toolbar(viewGroup)中间添加的view


除了menu与actionBar一样只能在menu  xml 中定义 其他的可以通过 toolbar的方法直接添加修改 也可以在 Layout 布局中修改这些属性


像这样

这里需要注意 toolbar.setTitlt() 如果在onCreate中需要在 setSupportActionBar(toolbar)之前调用 或者在onRusume 之后调用

toolbar.setNavigationOnclickListenner()

toolbar.setOnMenuItemClickListener( )

这个需要在setSupportActionBar( )之后调用  具体原因在下面

源码是这样的:


初始化ToolBarActionBar是关键 


如果我们在setSupporActionBar之前设置mMenuClicker 将会被系统的覆盖

这里还没有发现 setTitle()与 setNavigationListener 为啥失效

但是 setNavigationListener失效 主要是 setSurpportActionBar(toolbar)执行后 又重新设置了Listener 但是没有找到具体代码

TOODO...

设置menu 需要重写onCreateOptionsMenu() 与actionBar设置一样  来讲xml布局引入 menu中


这个方法


在 toolbar  中添加view 

上面的toolbar 我们添加了 theme主题所以他的样式就固定了 然而当我们什么都不添加时  toolbar就完全相当于一个viewGroup 很干净


将view添加进 在toolbar中 效果如下


然后在activity中也不进行 setSurpotActionBar的绑定  直接通过findView 形式控制 

这种形式基本上把 toolbar 无意义化了

那么如何处理 





然后就拿到这么个toolbar

感受 :如果想要自己想要的效果还是需要 自己重新来制作(自定义)titleBar

反而更简单点

在总结一下 toolbar  第一步放layout布局里 设置id

findViewBy(id)拿到view toolbar

然后 在onCreate 中 toolbar 设置各种属性  最后调用setSurpporActionBar(toolbar)

想要 overFlow 就在menu中添加item 如果 item 属相干好可以放在toolbar上 是不会显示 overfolw的

想要menu点击 toolbar设置 setOnMenuItemClick事件

想要navigation icon点击设置 setNavigationClick()

不想写demo 原因就是不想使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352