Styling Sherlock Action Bar выпадающие элементы

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

Я попытался изучить abs__styles.xml и abs__themes.xml в проекте SherlockActionBar, но ни один из элементов, которые я добавил в мой проект, не работал.

Способ создания меню следующий:

@Override
 public boolean onCreateOptionsMenu(Menu menu) {
 // Sharing icons
 SubMenu submenu = menu.addSubMenu(null);
 submenu.add(getResources().getString(R.string.twitter));
 submenu.add(getResources().getString(R.string.facebook));
 submenu.add(getResources().getString(R.string.email));
 // Share button itself
 MenuItem ShareButton = submenu.getItem();
 ShareButton.setIcon(R.drawable.icon_share_triangle);
 ShareButton.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
 // Twitter submenu button
 MenuItem TwitterItem = submenu.getItem(0);
 TwitterItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
 TwitterItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
 public boolean onMenuItemClick(MenuItem item) {
 setShareTwitterIntent();
 return true;
 }
 });
...
}

Я также попытался взглянуть на это сообщение , используя следующий код, но все же не повезло:

Мне просто нужно изменить цвет фона элементов в выпадающем списке.

Большое спасибо за вашу помощь!

EDIT:

Я также пробовал это, и он все еще не работает:

<item name="android:actionDropDownStyle">@style/MyApp.DropDownNav</item>
<item name="actionDropDownStyle">@style/MyApp.DropDownNav</item>
...
5 ответов

У меня была такая же проблема, и после большого количества царапин на голове - вроде царапины, как собака с плохим случаем блох - я получил ее на работу. Это с ABS 4.1 (90). Следующий код изменит цвет фона выпадающего элемента.

SomeActivity.java

Context context = ab.getThemedContext();
ArrayAdapter<charsequence> list = ArrayAdapter.createFromResource(
 context, R.array.map_activity_view_list,
 R.layout.sherlock_spinner_item);
list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
</charsequence>

Примечание. Вы используете R.layout.sherlock_spinner_item для createFromResource и R.layout.sherlock_spinner_dropdown_item для setDropDownViewResource. Это то, что появляется в образце в источнике АБС: https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/demos/src/com/actionbarsherlock/sample/demos/ListNavigation.java

Это связано с тем, что невыделенное раскрывающееся меню на панели действий, когда является макетом sherlock_spinner_item, и фактические элементы выпадающего списка используют макет sherlock_spinner_dropdown_item, что означает, что стили различны для каждого:

  • sherlock_spinner_item
    • Android: spinnerItemStyle
    • spinnerItemStyle
  • sherlock_spinner_dropdown_item
    • Android: spinnerDropDownItemStyle
    • spinnerDropDownItemStyle

Помните, что нужны оба стиля - андроид: префиксные стили для родного ICS ActionBar и стиль без андроида: префикс для стиля AcrionBarSherlock на устройствах старше ICS.

RES/значения/styles.xml

<!--?xml version="1.0" encoding="utf-8"?-->
<resources>
 
 
 
 
 
</resources>

RES/значения/color.xml

<!--?xml version="1.0" encoding="utf-8"?-->
<resources>
 <color name="orange">#ffEf4f1f</color>
</resources>

Пожалуйста, отметьте как ответ, если это решает его для вас. Спасибо!

Ссылки:

Обзор стилей:

https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock/res/values/abs__styles.xml

Обзор тем:

https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock/res/values/abs__themes.xml


Чтобы изменить фоновый рисунок в пункте меню на панели действий Шерлок (v4.1.0), используйте следующее:

надеюсь, что это поможет.


Я использовал это, и его работа для меня

где

"spinner_background_holo_light" и "list_selector_holo_light" являются селекторами

и

"actionbar_normal" drawable (изображение ИЛИ цвет)


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

Во-первых, моя основная тема темы расширяет Theme.Sherlock:

Моя фактическая тема приложения AppTheme расширяет мою базу (я не могу вспомнить, почему я сделал это в то время, это, вероятно, не нужно).

Мне нужно было переопределить Widget.Sherlock.TextView.SpinnerItem и так далее:

Причиной этого было обращение к виджету TextApperance: TextAppearance.Sherlock.Widget.TextView.SpinnerItem

Это было отменено, как показано ниже:

Моя самая большая ошибка в привязке, чтобы получить текст при попытке исправить это, пыталась напрямую установить textColor в переопределенном SpinnerItemStyle. Поскольку он использовал виджет textAppearance, он просто не работал.

Затем мой код, чтобы сделать эту работу, выглядит так (в моей работе onCreate method):

SpinnerAdapter spinnerAdapter = ArrayAdapter.createFromResource(this,
 R.array.call_type, R.layout.sherlock_spinner_item);
OnNavigationListener onNavigationListener = new OnNavigationListener() {
 // Get the same strings provided for the drop-down ArrayAdapter
 String[] strings = getResources().getStringArray(R.array.call_type);
 @Override
 public boolean onNavigationItemSelected(int position, long itemId) {
 String filter = strings[position];
 filterCalls(filter);
 return true;
 }
 };
ActionBar actionBar = getSupportActionBar();
 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
 actionBar.setListNavigationCallbacks(spinnerAdapter,
 onNavigationListener);

Это позволило мне изменить цвет текста, на счетчике выпадающего списка с помощью ActionBarSherlock.


ActionBarSherlock требует использования одной из трех тем. Вы можете их расширить, и переопределите стиль выпадающего списка, например:

Предполагается, что вам нужна голоновая тема, а стиль выпадающего меню - MyDropDownDav.

Затем в вашем коде вы просто переключаетесь на использование своей темы (либо в манифесте, либо в Activity onCreate).

licensed under cc by-sa 3.0 with attribution.