Мне нужно добавить выпадающий список в панель действий. Я пробовал много разных способов сделать это, но каждый демонстрирует свой конкретный недостаток. Вот результаты 2-х попыток.
Верхний — это спиннер, добавленный в панель действий с помощью actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
. Никакие стили не используются, за исключением всей темы приложения, то есть @style/Theme.Sherlock
. (Приложение должно выглядеть одинаково на новых и старых устройствах, поэтому используется ActionBarSherlock.) Как видите, этот метод создает черный цвет текста на темном/черном фоне. Выбранный элемент «показывается» на панели действий черным шрифтом на черном фоне. (По умолчанию это были макеты android.R.layout.simple_spinner_item
и android.R.layout.simple_spinner_dropdown_item
, но я пробовал и пользовательские со ссылками на разные доступные стили).
Например:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, test);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
actionBar.setListNavigationCallbacks(adapter, new ActionBar.OnNavigationListener()
...
Второе — это меню. По цветам вроде нормально. Я хотел бы иметь тот же стиль (цвета, размер шрифта, выравнивание) в счетчике. Но я не могу получить это после того, как поиграл с множеством предложений, найденных в Интернете, и в частности на SO. Обратите внимание, что я не хочу указывать жестко заданные цвета в своем пользовательском стиле. Я хочу наследовать их от существующих стилей (системные или голографические темы Шерлока). И родительские стили должны быть известны на уровне API 10. В любом случае, это приемлемый стиль для меню. Мне нужно только переместить его на спиннер.
Подход с меню может быть обходным путем, но ему не хватает маленького треугольника в правом нижнем углу, указывающего на то, что пользователю будет представлен раскрывающийся список. Я знаю, что это происходит из списка состояний счетчика, который можно нарисовать, и я могу применить тот же фон к пунктам меню. Но это влияет на ВСЕ пункты меню, тогда как мне нужно показать треугольник только на пунктах с подменю.
Я был бы признателен за решение в любом направлении.
Context context = getSupportActionBar().getThemedContext();
вместоthis
. - person rciovati   schedule 08.04.2013R.layout.sherlock.
у меня все заработало. Опубликуйте ответ. - person Stan   schedule 08.04.2013