2013-07-29 2 views
2

Я совершенно новой для разработки Android, и я пытаюсь построить ActionBar с ShareActionProvider, используя «акции» ActionBar (т.е. не с помощью ActionBarSherlock), потому что я хочу нацелить только устройства ICS +.Скрыть значок доля действий вблизи поставщика доля действия БЕЗ ActionBarSherlock

Я бы хотел, чтобы функция истории была включена (как и по умолчанию), но я не хочу использовать наиболее часто используемый значок значка рядом с кнопкой совместного доступа, потому что он занимает слишком много места.
Я знаю, что использование ActionBarSherlock возможно, но, как я уже сказал, я пытаюсь сделать это с помощью акции ActionBar, поэтому я хотел бы знать, как преодолеть эту проблему.

Я нашел эти два взаимосвязанных ответа:
How to hide the share action (which use most) icon near the share action provider?
Android: ShareActionProvider with no history

, но ни один из них явно не говорят, как редактировать Android источники иметь другой «версию» ActionBar, который скрывает значок.
Я имею в виду, как я могу объединить два ответа и отправить свое приложение с измененным классом ActionBar, который скрывает самый используемый значок?

EDIT:
Я ищу краткий перечень операций, которые нужно сделать, чтобы расширить трех классов ShareActionProvider, ActivityChooserView и ActivityChooserMode построить модифицированную версию из них, что не вызывать ошибки в Eclipse. AFAIK это не документировано нигде в Интернете (Google не дает результатов).

ответ

1

, но ни один из них не говорит, как отредактировать источники Android, чтобы иметь другую «версию» ActionBar, которая скрывает значок.

Это потому, что вы не меняете панель действий. Вы меняете ShareActionProvider. Если вам не нравится существующая реализация ShareActionProvider, создайте свою собственную, возможно, используя существующую реализацию в качестве отправной точки.

Например, это то, что the accepted answer на Android: ShareActionProvider with no history вопрос описывает. Ни вопрос, ни ответ не ссылаются на ActionBarSherlock.

+0

Да, вы правы, но то, что я искал, - это объяснение того, как на самом деле «написать свой собственный ShareActionProvider, скопировав тот, который найден в Android-источнике, и скопируйте его из ActivityChooserView и ActivityChooserModel из источника». Я не смог найти какой-либо пример этого в Интернете и попытался просто скопировать файлы из android Sources [здесь] (http://grepcode.com/file_/repository.grepcode.com/java/ext/com .google.android/android/4.1.2_r1/android/widget/ShareActionProvider.java /? v = source) генерирует много ошибок в Eclipse. – virtualdj

+0

@virtualdj: «Множество ошибок» в основном будет поступать из ссылок на внутренние ресурсы (те, что из 'com.android.internal.R'). Вам нужно будет создать свои собственные замены для этих ресурсов, а затем исправить ссылки «R». В противном случае, возможно, вам лучше всего будет иметь простой элемент действия «share», который запускает диалог выбора, в отличие от использования «ShareActionProvider». Я сомневаюсь, что вы найдете пошаговые инструкции об изменении 'ShareActionProvider'. – CommonsWare

+0

Скопировать и вставить 3 полных файла на @steemcb [post] (http://stackoverflow.com/a/13939466/2631300) было бы достаточно для понимания, я думаю. К сожалению, я не могу прокомментировать этот ответ, чтобы запросить полные файлы, так как у меня недостаточно репутации SE :-( – virtualdj

0
  1. Скопировать файлы ActivityChooserView.java и ShareActionProvider.java файлы из https://android.googlesource.com/platform/frameworks/support.git в свой проект.
  2. Сделайте Ctrl + Shift + O на eclipse на обоих файлах, чтобы исправить импорт. В свой файл ShareActionProvider.java измените импорт для ActivityChooserView.java на новый файл.
  3. Изменить импорт ShareActionProvider в файл, в котором вы реализовали onCreateOptionsMenu(), в том месте, где вы скопировали этот файл.
  4. В menu.xml исправьте класс ShareActionProvider новым.
  5. Ищите if (activityCount == 1 || activityCount> 1 & & historySize> 0) в ActivityChooserView.java. измените его на if (false)

Вы все настроены!

+0

Спасибо за ответ, однако я думаю, что он не завершен. Сначала мне нужно также скопировать ** ActivityChooserModel.java ** из предоставленной вами ссылки (спасибо за это!). Затем, самое главное, как вы исправляете ошибки R, такие как ** R.styleable.ActivityChooserView ** (ошибка «abc_activity_chooser_view не может быть разрешена или не является полем»)? – virtualdj

+0

Извините, я был слепым и не смотрел файлы в каталоге ** res ** на support.git. Однако после копирования всех файлов у меня все еще есть проблемы, потому что источники используют ActionBarCompat, пока я не использую библиотеку поддержки приложения (я на ICS +). Я постараюсь справиться с этим ... – virtualdj