Android轩辕剑之ActionBar之三

本文详细介绍了在Android应用中如何添加和自定义Action Provider,包括使用ShareActionProvider类以及创建自定义Action Provider的步骤,如ActionProvider()、OnCreateActionView()和onPerformDefaultAction()的方法解析。此外,还提及了添加导航标签的相关内容。
摘要由CSDN通过智能技术生成

传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229

6添加Action Provider

        与action view类似,Action Provider(由ActionProvider类定义的)用一个定制的布局代替一个action item,它还需要对所有这些item行为的控制。当你在action bar中给一个菜单项声明一个action item时,它不仅要一个定制的布局来控制这个菜单项的外观,而且当它显示在溢出菜单中时,还要处理它的默认事件。无论是在action bar中还是在溢出菜单中,它都能够提供一个子菜单。
        例如,ActionProvider的扩展类ShareActionProvider,它通过在action bar中显示一个有效的共享目标列表来方便共享操作。与使用传统的调用ACTION_SEND类型Intent对象的action item不同,你能够声明一个ShareActionProvider对象来处理一个action item。这种action provider会保留一个带有处理ACTION_SEND类型Intent对象的应用程序的下拉列表,即使这个菜单项显示在溢出菜单中。所以当你使用像这样的Action Provider时,你不必处理有关这个菜单项的用户事件。
        要给一个操作项声明一个操作提供器,就要在菜单资源中对应的<item>元素中定义android:actionProviderClass属性,提供器要使用完整的类名。
<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/menu_share"

          android:title="@string/share"

          android:showAsAction="ifRoom"

          android:actionProviderClass="android.widget.ShareActionProvider" />

    ...

</menu>
        在这个例子中,用ShareActionProvider类作为action provider,在这里,action provider需要菜单项的控制,并处理它们在action bar中的外观和行为以及在溢出菜单中的行为。你必须依然给这个菜单项提供一个用于溢出菜单的文本标题。
        尽管action provider提供了它在溢出菜单中显示时所能执行的默认操作,但是Activity(或Fragment)也能够通过处理来自onOptionsItemSelected()回调方法的点击事件来重写这个默认操作。如果你不在这个回调方法中处理点击事件,那么action provider会接收onPerformDefaultAction()回调来处理事件。但是,如果action provider提供了一个子菜单,那么
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值