Как исправить значок «Поделиться» на панели действий поддержки

Я пытаюсь реализовать функцию общего доступа в своем приложении. Пока все работает нормально, и я могу поделиться текстом со всеми другими приложениями. Проблема в том, как это показано.

Я хочу, чтобы был виден только значок общего доступа, а затем, когда пользователь нажимает на него, он открывает диалоговое окно ОС и позволяет пользователю выбрать приложение, с которым он хочет поделиться контентом.

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

Мое приложение в настоящее время выглядит так:

введите здесь описание изображения

Вокруг него белая окантовка, что мне не нравится. Есть ли способ изменить иконку??

Как мне это исправить??


person Vahid Amiri    schedule 31.01.2016    source источник
comment
Вы имеете в виду, что не хотите иметь значок smm?достаточно только значка общего доступа?   -  person penkzhou    schedule 31.01.2016
comment
@penkzhou, Да, именно это я и имею в виду. Когда пользователь нажимает на общий доступ, открывается диалоговое окно общего доступа.   -  person Vahid Amiri    schedule 31.01.2016


Ответы (2)


Вы просто хотите отключить историю обмена. Официального API для этого нет, но вы можете создать свой собственный ShareActionProvider. На самом деле есть два похожих вопроса на SO:

  1. Как отключить историю общего доступа при использовании ShareActionProvider?< /а>
  2. Как скрыть значок действия "Поделиться" (которое используется чаще всего) рядом с поставщиком действия "Поделиться"?

Хотелось бы, чтобы это могло помочь вам.

person penkzhou    schedule 31.01.2016

Как упоминалось здесь, при использовании библиотеки поддержки это можно очень легко исправить. Этот метод не отключит историю общего доступа, но скроет значки на панели действий. Мне просто нужно было создать подкласс 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.

person Vahid Amiri    schedule 31.01.2016