Как скрыть значок действия share (который используется больше всего) рядом с поставщиком акций?

См. Изображение. Как я могу скрыть значок «P», что означает совместное использование Pinterest?

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

Они оба находятся на панели действий, и я использую ActionBarSherlock.

Solutions Collecting From Web of "Как скрыть значок действия share (который используется больше всего) рядом с поставщиком акций?"

Если вы хотите сохранить всю модель данных об общих ресурсах , но просто не хотите дополнительной «активности по умолчанию» icom. Ответ: Как отключить историю совместного использования при использовании ShareActionProvider? Недостаточно.

Что вам нужно сделать:

  • Скопируйте эти классы из ActionBarSherlock в код проекта
    • ShareActionProvider.java
    • ActivityChooserView.java
  • В свой класс ShareActionProvider.java импортируйте ActivityChooserView.java, который вы только что скопировали, а не местоположение файла ActionBarShelock
  • В ActivityChooserView.java –
    • Найдите строку if (activityCount > 0 && historySize > 0)
    • Замените эту строку на if (false) (это довольно уродливо, но это самое быстрое исправление. Вы можете вникать в код, чтобы удалить все вхождения реализации DefaultActivity)

Изменить: не забудьте установить новый ActionProvider в свой пункт меню, из XML он будет выглядеть так: android:actionProviderClass="com.*.CustomShareActionProvider"

Это оно!

Я нашел способ обойти это. Я использую библиотеку поддержки 23.0.1, я не тестировал ее на других версиях поддерживающих библиотек.

Решение легко, когда вы создаете ShareActionProvider, просто переопределите метод onCreateActionView () и верните null для него. Затем вы можете отслеживать всю историю в всплывающем меню, но история не будет отображаться на панели инструментов.

Вот пример кода:

 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem item = menu.add(Menu.NONE, R.id.menu_share, Menu.NONE, R.string.share); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); mShareActionProvider = new ShareActionProvider(this) { @Override public View onCreateActionView() { return null; } }; item.setIcon(R.drawable.abc_ic_menu_share_mtrl_alpha); MenuItemCompat.setActionProvider(item, mShareActionProvider); return true; } 

В настоящее время я не нашел никакой проблемы, используя эту работу.

Основываясь на ответе Шона, я создал необходимые классы, вы можете скопировать их в свой проект ( https://gist.github.com/saulpower/10557956 ). Это не только добавляет возможность отключить историю, но также фильтрует приложения, с которыми вы хотите поделиться (если вы знаете имя пакета).

 private final String[] INTENT_FILTER = new String[] { "com.twitter.android", "com.facebook.katana" }; @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.journal_entry_menu, menu); // Set up ShareActionProvider's default share intent MenuItem shareItem = menu.findItem(R.id.action_share); if (shareItem instanceof SupportMenuItem) { mShareActionProvider = new ShareActionProvider(this); mShareActionProvider.setShareIntent(ShareUtils.share(mJournalEntry)); mShareActionProvider.setIntentFilter(Arrays.asList(INTENT_FILTER)); mShareActionProvider.setShowHistory(false); ((SupportMenuItem) shareItem).setSupportActionProvider(mShareActionProvider); } return super.onCreateOptionsMenu(menu); }