我正在尝试在我的应用中实现共享功能。到目前为止它工作正常,我可以分享文本到所有其他应用程序。问题在于它的显示方式。
我希望只显示共享图标,然后当用户点击它时,它会打开操作系统对话框,让用户选择他们想要共享内容的应用。
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" />
我的应用目前看起来像这样:
周围还有一个白色的边框,我不喜欢。 有没有办法改变图标??
我该如何解决?
答案 0 :(得分:1)
您只想关闭共享历史记录。没有官方API可以执行此操作,但您可以创建自己的ShareActionProvider
。实际上在SO上有两个类似的问题:
答案 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
。