2013-12-16 4 views
2

Я меняю пользовательский интерфейс моего приложения на зеленые цвета. В ActionBar я использую ShareActionProvider для обмена данными с другими пользователями, но этот пункт меню не имеет тот же цвет, что и другие пункты меню. Однако его раскрывающийся список имеет правильные цвета.Изменение стиля не работает

enter image description here enter image description here enter image description here

Я бег моего приложения в Gingerbread, поэтому при нажатии кнопки меню появляется пункт меню, но он также имеет неправильные цвета.

enter image description here

Я использовал Android Action Bar Style Generator, но есть что-то я пропускаю. Это мой код в/RES/значения:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- the theme applied to the application or activity --> 
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
    <item name="actionBarItemBackground">@drawable/selectable_background_newtheme</item> 
    <item name="actionBarStyle">@style/ActionBar.Solid.NewTheme</item> 
    <item name="popupMenuStyle">@style/PopupMenu.NewTheme</item> 
    <item name="dropDownListViewStyle">@style/DropDownListView.NewTheme</item> 
    <item name="actionDropDownStyle">@style/DropDownNav.NewTheme</item> 

    <!-- Light.DarkActionBar specific --> 
    <item name="actionBarWidgetTheme">@style/NewTheme.Widget</item> 
</style> 



<!-- ActionBar style --> 
<style name="ActionBar.Solid.NewTheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
    <item name="background">@drawable/action_bar_gradient</item> 
</style> 

<style name="PopupMenu.NewTheme" parent="@style/Widget.AppCompat.PopupMenu"> 
    <item name="android:popupBackground">@drawable/background_gradient</item> 
</style> 

<style name="DropDownListView.NewTheme" parent="@style/Widget.AppCompat.ListView.DropDown"> 
    <item name="android:listSelector">@drawable/selectable_background_newtheme</item> 
</style> 

<style name="DropDownNav.NewTheme" parent="@style/Widget.AppCompat.Spinner.DropDown.ActionBar"> 
    <item name="android:background">@drawable/spinner_background_ab_newtheme</item> 
    <item name="android:dropDownSelector">@drawable/selectable_background_newtheme</item> 
</style> 

<!-- this style is only referenced in a Light.DarkActionBar based theme --> 
<style name="NewTheme.Widget" parent="@style/Theme.AppCompat"> 
    <item name="popupMenuStyle">@style/PopupMenu.NewTheme</item> 
    <item name="dropDownListViewStyle">@style/DropDownListView.NewTheme</item> 
</style> 

Есть ли недостающий элемент? Заранее спасибо

+0

Является ли тянущийся синий градиент со светло-голубой границей? –

+0

@RickFalck нет, он унаследован от родителя. – David

+0

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

ответ

0

Думаю, я могу помочь вам решить проблему с пряниками. Это меню называется «панель» в стиле AppCompat & тема .XML-файлов.

Таким образом, чтобы переопределить его собственный цвет селектора, это то, что я предлагаю:

В вашей темы, CustomActionBarTheme, добавьте следующую строку:

<item name="panelMenuListTheme">@style/Theme.NewTheme.CompactMenu</item> 

И добавить эти два стиля:

<style name="Theme.NewTheme.CompactMenu" parent="@style/Theme.AppCompat.CompactMenu"> 
    <item name="android:listViewStyle">@style/myCustomMenuStyle</item> 
</style> 

и

<style name="myCustomMenuStyle" parent="@style/Widget.AppCompat.ListView.Menu"> 
    <item name="android:listSelector">@drawable/newtheme_list_selector_holo_light</item> 
</style> 

примечание: @drawable/newtheme_list_selector_holo_light - это ресурс xml, который я получил от Android Holo Colors Generator.

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

В частности:

newtheme_list_selector_holo_light.xml> в разрешении/вытяжке

newtheme_list_selector_background_transition_holo_light.xml> в разрешении/вытяжке

И MDPI, ИПЧР, xdpi и xxdpi из следующих .9.png ресурсы:

newtheme_list_selector_disabled_ho lo_light.9.png

newtheme_list_pressed_holo_light.9.PNG (аналогично Png Bar генератора действий создан)

newtheme_list_longpressed_holo.9.png

newtheme_list_focused_holo.9.png (аналогично Png Bar генератора действий создан)

3

я, наконец, получил его работая самостоятельно. Я должен был добавить:

<item name="android:listChoiceBackgroundIndicator">@drawable/selectable_background_realestate</item> 

в * themes_base.xml * в значениях-V14 и

<item name="listChoiceBackgroundIndicator">@drawable/selectable_background_realestate</item> 

в themes_base.xml значений для правильного цвета выделения при нажатии элемента списка.

Я также должен был изменить actionBarItemBackground в themes_base.xml (значения и значения-v14), чтобы ссылаться на мой чертеж, чтобы значок общего доступа получал тот же самый оттенок.

Наконец, чтобы получить правильный цвет элемента выпадающего меню, я должен был изменить андроида: popupBackground к @ вытяжке/menu_dropdown_panel_realestate в styles_base.xml (значения и ценности-V14) для Widget.AppCompat.Base.ListPopupWindow

в I ссылочные вводимого коэффициента в моем ответе, были получены с использованием Android Asset Studio для AppCompat

+0

Я попробовал ваше предложение, но backgorund из меню параметров не меняется, я использовал ListPopupWindow – Hunt

0

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

<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:itemBackground">@drawable/selectable_background_newtheme</item> 
</style> 

Затем, по-видимому, чтобы настроить ShareActionProvider пункт нажата, вам нужен этот атрибут:

<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:selectableItemBackground">@drawable/selectable_background_newtheme</item> 
</style> 
Смежные вопросы