android menu 分享功能,给 ActionBar 增加分享功能

Android4.0 之后系统中 ActionProvider 的引入使在 ActionBar 中添加分享功能变得更为简单。它会 handle 出现 share 功能的 appearance 与 behavior。在 ShareActionProvider 的例子里面,我们只需要提供一个 share intent,剩下的就交给 ShareActionProvider 来做。

1. 更新菜单声明

使用ShareActionProvider的第一步,在 menu resources 对应 item 中定义 android:actionProviderClass 属性。

android:showAsAction="ifRoom"

android:title="Share"

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

...

2. 设置分享的 intent

为了实现 ShareActionProvide r的功能,我们必须为它提供一个 intent。该 share intent 应该像第一课讲的那样,带有 ACTION_SEND 和附加数据(例如 EXTRA_TEXT 与 EXTRA_STREAM)的。使用 ShareActionProvider 的例子如下:

private ShareActionProvider mShareActionProvider;

...

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate menu resource file.

getMenuInflater().inflate(R.menu.share_menu, menu);

// Locate MenuItem with ShareActionProvider

MenuItem item = menu.findItem(R.id.menu_item_share);

// Fetch and store ShareActionProvider

mShareActionProvider = (ShareActionProvider) item.getActionProvider();

// Return true to display menu

return true;

}

// Call to update the share intent

private void setShareIntent(Intent shareIntent) {

if (mShareActionProvider != null) {

mShareActionProvider.setShareIntent(shareIntent);

}

}

3. 去掉分享图标右边的最常分享应用图标

如上设置后,分享图标右边会出现一个最常分享应用图标,因为会记录分享历史,并把最常分享的应用图标显示出来。

可以如下设置,去掉这个图标:

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_news,menu);

if(isFavourite){

menu.findItem(R.id.menu_news_fav).setIcon(R.drawable.fav_selected);

}

MenuItem item=menu.findItem(R.id.menu_news_share);

// 为了不在右边显示最常用应用图标。暂未出现问题。

ShareActionProvider shareActionProvider=new ShareActionProvider(this){

@Override

public View onCreateActionView() {

return null;

}

};

MenuItemCompat.setActionProvider(item,shareActionProvider);

shareActionProvider.setShareIntent(shareIntent);

return true;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值