Android ActionBar完全解析使用官方推荐的最佳导航栏(下)

  

本篇文章主要内容来自于Android医生,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文。

  http://developer.android.com/guide/topics/ui/actionbar.html

  

限于篇幅的原因,在上篇文章中我们只学习了ActionBar基础部分的知识,那么本篇文章我们将接着上一章的内容继续学习,探究一下ActionBar更加高级的知识。如果你还没有看过前面一篇文章的话,建议先去阅读<强> Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

  

添加行动提供者

  

和行动的观点有点类似,行动提供者也可以将一个行动按钮替换成一个自定义的布局。但不同的是,行动提供者能够完全控制事件的所有行为,并且还可以在点击的时候显示子菜单。

  

为了添加一个行动提供者,我们需要在& lt; item>标签中指定一个actionViewClass属性,在里面填入行动提供者的完整类名。我们可以通过继承ActionProvider类的方式来创建一个自己的行动提供者,同时,Android也提供好了几个内置提供者的行动,比如说ShareActionProvider。

  

由于每个行动提供者都可以自由地控制事件响应,所以它们不需要在onOptionsItemSelected()方法中再去监听点击事件,而是应该在onPerformDefaultAction()方法中去执行相应的逻辑。

  

那么我们就先来看一下ShareActionProvider的简单用法吧,编辑菜单资源文件,在里面加入ShareActionProvider的声明,如下所示:

        & lt;菜单xmlns: android=" http://schemas.android.com/apk/res/android "   xmlns:工具=" http://schemas.android.com/tools "   工具:上下文=" com.example.actionbartest。祝辞MainActivity”;   & lt;项目   android: id=癅 + id/action_share”   android: actionProviderClass=" android.widget.ShareActionProvider "   android: showAsAction=" ifRoom "   android: title=癅string/action_share”/比;   ……   & lt;/menu>之前      

注意,ShareActionProvider会自己处理它的显示和事件,但我们仍然要记得给它添加一个标题,以防止它会在溢出当中出现。

  

接着剩下的事情就是通过意图来定义出你想分享哪些东西了,我们只需要在onCreateOptionsMenu()中调用菜单项的getActionProvider()方法来得到该ShareActionProvider对象,再通过setShareIntent()方法去选择构建出什么样的一个目的就可以了。代码如下所示:

        @Override   公共布尔alt=" Android ActionBar完全解析使用官方推荐的最佳导航栏(下)">

  

细心的你一定观察到了,这个ShareActionProvider点击之后是可以展开的,有点类似于溢出的效果,这就是行动提供者的子菜单。除了使用ShareActionProvider之外,我们也可以自定义一个行动提供者,比如说如果想要建立一个拥有两项子菜单供应商的行动,就可以这样写:

        公开课MyActionProvider延伸ActionProvider {   公共MyActionProvider(上下文语境){   超级(上下文);   }   @Override   公众视野>   & lt;菜单xmlns: android=" http://schemas.android.com/apk/res/android "   xmlns:工具=" http://schemas.android.com/tools "   工具:上下文=" com.example.actionbartest。祝辞MainActivity”;   & lt;项目   android: id=癅 + id/action_share”   android: actionProviderClass=" com.example.actionbartest.MyActionProvider "   android:图标=" @drawable/ic_launcher”   android: showAsAction=" ifRoom "   android: title=癅string/action_share”/比;   ……   & lt;/menu>之前      

现在重新运行一下代码,结果如图所示:

  

 Android ActionBar完全解析使用官方推荐的最佳导航栏(下)>,</p>
  <p> </p>
  <p>标签的应用可以算是非常广泛了,它可以使得用户非常轻松地在你的应用程序中切换不同的视图。而Android官方更加推荐使用ActionBar中提供的标签功能,因为它更加的智能,可以自动适配各种屏幕的大小,比如说,在平板上屏幕的空间非常充足,标签会和行动按钮在同一行显示,如下图所示:</p>
  <p> <img src=

Android ActionBar完全解析使用官方推荐的最佳导航栏(下)