如何隐藏共享动作(其中使用最多)图标共享动作提供近吗?(How to hide the share

2019-08-18 22:43发布

看到图片。 我怎么能隐藏图标“P”,这意味着份额Pinterest的?

他们都是在操作栏上,我使用ActionBarSherlock。

Answer 1:

如果您想保留的所有共享历史数据模型 ,但就是不想额外的“默认共享活动” ICOM。 在回答使用ShareActionProvider时,你如何关闭股历史? 不够好。

你应该做的是:

  • 从ActionBarSherlock这些类复制到项目的代码
    • ShareActionProvider.java
    • ActivityChooserView.java
  • 在你ShareActionProvider.java类,导入哪些刚才复制的,而不是ActionBarShelock文件位置ActivityChooserView.java
  • 在ActivityChooserView.java -
    • 找到行if (activityCount > 0 && historySize > 0)
    • 替换该行if (false) (这是很丑陋,但它是最快的修补程序。你可以深入到代码以删除DefaultActivity实施的所有实例)

编辑:请不要忘记为新设置ActionProvider到你的菜单项,从XML它看起来像: android:actionProviderClass="com.*.CustomShareActionProvider"

而已!



Answer 2:

我找到了一种方法来解决这个问题。 我使用的支持库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;
}

目前我还没有发现使用此解决任何问题。



Answer 3:

基于关肖恩的答案,我创建了必要的类,你可以将它们复制到你的项目( 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);
}


文章来源: How to hide the share action (which use most) icon near the share action provider?