修改样式不起作用

时间:2013-12-16 21:59:47

标签: android android-actionbar android-ui android-appcompat

我正在将我的应用的UI更改为绿色。在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 / values中的代码:

<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>

有没有丢失的物品?提前致谢

3 个答案:

答案 0 :(得分:3)

我终于让它自己工作了。我不得不补充道:

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

in * themes_base.xml * in values-v14 and

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

在themes_base.xml中按下列表项时正确突出显示颜色的值。

我还必须更改themes_base.xml中的 actionBarItemBackground (值和值-v14)以引用我的drawable,以便共享图标获得相同的突出显示。

最后为了获得下拉菜单项的正确颜色,我必须将 android:popupBackground 更改为 Widget的styles_base.xml(values和values-v14)中的@ drawable / menu_dropdown_panel_realestate。 AppCompat.Base.ListPopupWindow

我在答案中引用的drawable是使用Android Asset Studio为AppCompat

生成的

答案 1 :(得分:0)

我想我可以帮你解决姜饼问题。 该菜单在AppCompat样式&amp;中被称为“panel”。主题.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是我从Android Holo Colors Generator获得的xml资源。

我建议您使用该网站,顺便说一下,在这种情况下,您只需要“列表选择器”的资源,并从其输出的ZIP文件中获取以下资源,并且把它们放在你的可绘制文件夹中。

具体做法是:

newtheme_list_selector_holo_light.xml &gt;在res / drawable中

newtheme_list_selector_background_transition_holo_light.xml &gt;在res / drawable中

以下.9.png资源的mdpi,hdpi,xdpi和xxdpi:

newtheme_list_selector_disabled_holo_light.9.png

newtheme_list_pressed_holo_light.9.png (类似于png Action Bar Generator创建的)

newtheme_list_longpressed_holo.9.png

newtheme_list_focused_holo.9.png (类似于创建的动作栏生成器)

答案 2 :(得分: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>