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

时间:2016-01-31 07:45:59

标签: android xamarin shareactionprovider

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

我希望只显示共享图标,然后当用户点击它时,它会打开操作系统对话框,让用户选择他们想要共享内容的应用。

    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" />

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

enter image description here

周围还有一个白色的边框,我不喜欢。 有没有办法改变图标??

我该如何解决?

2 个答案:

答案 0 :(得分:1)

您只想关闭共享历史记录。没有官方API可以执行此操作,但您可以创建自己的ShareActionProvider。实际上在SO上有两个类似的问题:

  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?
  3. 希望这些可以帮到你。

答案 1 :(得分:-1)

如前所述[{3}}使用支持库时,可以很容易地修复它。此方法不会关闭共享历史记录,但会隐藏操作栏中的图标。 我只需要将Android.Support.V7.Widget.ShareActionProvider子类化如下:(使用Xamarin的C#)

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

使用您喜欢的任何图标