如何修复支持操作栏中的共享图标

How to fix the share icon in the support actionbar

我正在尝试在我的应用程序中实现共享功能。到目前为止它工作正常,我可以将文本共享到所有其他应用程序。问题是它的显示方式。

我希望共享图标可见,然后当用户点击它时,它会打开 OS 对话框并让用户选择他们想要共享内容的应用程序。

    var share_article = menu.FindItem (Resource.Id.action_share);
    var share_article_provider = (Android.Support.V7.Widget.ShareActionProvider) Android.Support.V4.View.MenuItemCompat.GetActionProvider (share_article);
    share_article_provider.SetShareIntent (CreateIntent ());

和 xml:

<item 
    android:id="@+id/action_share"
    myapp:showAsAction="ifRoom"
    android:title="share"
    myapp:actionProviderClass="android.support.v7.widget.ShareActionProvider" />

我的应用目前看起来像这样:

它周围还有一个我不喜欢的白色边框。 有什么办法可以更改图标吗??

我该如何解决?

您只是想关闭您的分享 history.There 没有官方 API 这样做,但您可以自己制作 ShareActionProvider。实际上有两个类似的问题:

  1. How do you turn off share history when using ShareActionProvider?
  2. How to hide the share action (which use most) icon near the share action provider?

希望这些能对你有所帮助。

如前所述 here 使用支持库时,这个问题可以很容易地解决。此方法不会关闭共享历史记录,但会隐藏操作栏中的图标。 我只需要像下面这样子类化 Android.Support.V7.Widget.ShareActionProvider:(C# 使用 Xamarin)

public class MyShareActionProvider : Android.Support.V7.Widget.ShareActionProvider
{
    public SingleArticleShareActionProvider (Context context) : base (context)
    {}

    public override View OnCreateActionView ()
    {
        return null;
    }
}

然后在 OnCreateOptionsMenu 中使用 MyShareActionProvider,例如:

var share_article = menu.FindItem (Resource.Id.action_share);
var share = new SingleArticleShareActionProvider (globalContext);

Android.Support.V4.View.MenuItemCompat.SetActionProvider (share_article, share);
share_article.SetIcon (Resource.Drawable.abc_ic_menu_share_mtrl_alpha);
share.SetShareIntent (CreateIntent ());

您可以通过方法 SetIcon 使用任何您喜欢的图标。