2016-01-31 3 views
0

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

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

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

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

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

+0

Вы имеете в виду, что вы не хотите иметь значок smm? – penkzhou

+0

@penkzhou, Да, это именно то, что я имею в виду. Когда пользователь нажимает на общий доступ, открывается диалог общего доступа. – VSG24

ответ

-1

Как упоминалось, 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.

1

Вы просто хотите отключить свою историю share.There нет официального 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?

Желание это может помочь вам.