2017-01-31 6 views
0

У меня есть деятельность, связанная следующая тема: Theme.AppCompat.Light.DarkActionBar. В результате, названиеActionBar и пункт меню «больше» опций все белые, как я бы ожидать:Change actionbar spinner theme

enter image description here

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

Я заметил, что стиль выпадающего меню связано с общим стилем деятельности, например, если стиль деятельности изменяется на: Theme.AppCompat.Light, то это будет выглядеть сейчас вроде этого:

enter image description here

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

Теперь я знаю, что есть несколько способов справиться с этой ситуацией: первый из них не будет использовать список режимов навигации вообще, потому что он устарел уже, другой должен был бы использовать Toolbar и иметь Spinner внутри, оба в стиле. Но прежде чем идти по этому маршруту, я хочу убедиться, что, возможно, есть более простой подход.

Я пытался иметь собственную тему, которая простирается от Theme.AppCompat.Light:

<style name="LightTheme" parent="Theme.AppCompat.Light" /> 

, а затем использовать его, чтобы создать тематический контекст, когда накачивание выпадающего меню:

Context context = new ContextThemeWrapper(this, R.style.LightTheme); 
CustomAdapter adapter = new CustomAdapter(context); 

ActionBar actionBar = getSupportActionBar(); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
actionBar.setListNavigationCallbacks(adapter, null); 

но, к сожалению не имел никакого эффекта.

Итак, можно ли изменить стиль выпадающего меню, не затрагивая другие компоненты, например: панель действий?

ответ

1

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

Для стиля вращателя вы можете добавить это в вашей основной теме приложения или конкретно:

<item name="android:spinnerStyle">@style/Theme.AppCompat.Light</item> <item name="spinnerStyle">@style/Theme.AppCompat.Light</item>

Для всплывающей стиля:

<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>

+0

Отлично! Спасибо. –