看图片。如何隐藏表示分享到 Pinterest 的图标“P”?
它们都在操作栏上,我使用 ActionBarSherlock。
看图片。如何隐藏表示分享到 Pinterest 的图标“P”?
它们都在操作栏上,我使用 ActionBarSherlock。
如果您希望保留所有共享历史数据模型,但不想要额外的“默认共享活动”icom。使用 ShareActionProvider时如何关闭共享历史记录?还不够好。
你应该做的是:
if (activityCount > 0 && historySize > 0)
if (false)
(它非常难看,但它是最快的修复。您可以深入研究代码以删除所有出现的 DefaultActivity 实现)编辑:
不要忘记为ActionProvider
您的菜单项设置新的,从 XML 它看起来像:android:actionProviderClass="com.*.CustomShareActionProvider"
就是这样!
我找到了解决这个问题的方法。我正在使用支持库 23.0.1,我没有在其他支持库版本上测试过这个。
解决方案很简单,当您创建 ShareActionProvider 时,只需覆盖方法 onCreateActionView() 并为其返回 null。然后您可以在弹出菜单中跟踪所有历史记录,但历史记录不会显示在工具栏中。
这是一个代码示例:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem item = menu.add(Menu.NONE, R.id.menu_share, Menu.NONE, R.string.share);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
mShareActionProvider = new ShareActionProvider(this) {
@Override
public View onCreateActionView() {
return null;
}
};
item.setIcon(R.drawable.abc_ic_menu_share_mtrl_alpha);
MenuItemCompat.setActionProvider(item, mShareActionProvider);
return true;
}
目前,我没有发现使用此解决方法有任何问题。
根据 Sean 的回答,我创建了必要的类,您可以将它们复制到您的项目中(https://gist.github.com/saulpower/10557956)。这不仅增加了关闭历史记录的功能,还可以过滤您想要共享的应用程序(如果您知道包名称)。
private final String[] INTENT_FILTER = new String[] {
"com.twitter.android",
"com.facebook.katana"
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.journal_entry_menu, menu);
// Set up ShareActionProvider's default share intent
MenuItem shareItem = menu.findItem(R.id.action_share);
if (shareItem instanceof SupportMenuItem) {
mShareActionProvider = new ShareActionProvider(this);
mShareActionProvider.setShareIntent(ShareUtils.share(mJournalEntry));
mShareActionProvider.setIntentFilter(Arrays.asList(INTENT_FILTER));
mShareActionProvider.setShowHistory(false);
((SupportMenuItem) shareItem).setSupportActionProvider(mShareActionProvider);
}
return super.onCreateOptionsMenu(menu);
}