2013-08-06 43 views
5

我在我的项目中使用v7支持库。我的清单设置是:Android:样式溢出菜单在操作栏

android:minSdkVersion="7" 
    android:targetSdkVersion="15" 

我使用了Android Action Bar Style Generator来为我的Action Bar生成样式。问题是,虽然一切适用于最新的apis,但我的溢出菜单在低apis(在仿真器2.2和真实设备2.3.3 htc渴望测试)中不会改变。

1
(这应该为红色背景)

是菜单溢出加载项类似微调对话框或东西(如果这听起来愚蠢的SRY)一些其他的成分?为什么一个api的样式(例如15)不适用于其他(例如8),并且有什么我可以做的就是为所有api版本都有相同的溢出菜单。

这是我最初从Action Bar Style Generator生成的样式,我调整了很多但没有成功。

<resources> 

<style name="Theme.Example" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
    <item name="actionBarItemBackground">@drawable/selectable_background_example</item> 
    <item name="popupMenuStyle">@style/PopupMenu.Example</item> 
    <item name="dropDownListViewStyle">@style/DropDownListView.Example</item> 
    <item name="actionBarTabStyle">@style/ActionBarTabStyle.Example</item> 
    <item name="actionDropDownStyle">@style/DropDownNav.Example</item> 
    <item name="actionBarStyle">@style/ActionBar.Solid.Example</item> 
    <item name="actionModeBackground">@drawable/cab_background_top_example</item> 
    <item name="actionModeSplitBackground">@drawable/cab_background_bottom_example</item> 
    <item name="actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Example</item> 

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

</style> 

<style name="ActionBar.Solid.Example" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
    <item name="background">@drawable/ab_solid_example</item> 
    <item name="backgroundStacked">@drawable/ab_stacked_solid_example</item> 
    <item name="backgroundSplit">@drawable/ab_bottom_solid_example</item> 
    <item name="progressBarStyle">@style/ProgressBar.Example</item> 
</style> 

<style name="ActionBar.Transparent.Example" parent="@style/Widget.AppCompat.ActionBar"> 
    <item name="background">@drawable/ab_transparent_example</item> 
    <item name="progressBarStyle">@style/ProgressBar.Example</item> 
</style> 

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

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

<style name="ActionBarTabStyle.Example" parent="@style/Widget.AppCompat.ActionBar.TabView"> 
    <item name="android:background">@drawable/tab_indicator_ab_example</item> 
</style> 

<style name="DropDownNav.Example" parent="@style/Widget.AppCompat.Spinner.DropDown.ActionBar"> 
    <item name="android:background">@drawable/spinner_background_ab_example</item> 
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_example</item> 
    <item name="android:dropDownSelector">@drawable/selectable_background_example</item> 
</style> 

<style name="ProgressBar.Example" parent="@style/Widget.AppCompat.ProgressBar.Horizontal"> 
    <item name="android:progressDrawable">@drawable/progress_horizontal_example</item> 
</style> 

<style name="ActionButton.CloseMode.Example" parent="@style/Widget.AppCompat.ActionButton.CloseMode"> 
    <item name="android:background">@drawable/btn_cab_done_example</item> 
</style> 

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

回答

3

我就是这么做的:

<style name="Theme.yourapp" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:actionBarWidgetTheme">@style/Theme.yourapp.Widget</item> 
</style> 

<style name="Theme.yourapp.Widget" parent="@style/Theme.AppCompat"> 
    <item name="android:textColor">@android:color/black</item> 
</style> 
2

为了简单起见,android:命名空间属于内置到操作系统,而没有任何android:作为命名空间将属于您的应用程序(和你正在使用的库)任何东西。 ActionBar的大多数(即使不是全部)支持库都会尝试使用本机ActionBar实现,因此在您的样式中使用android:命名空间属性。当本机ActionBar不可用时,它将使用库实现和非命名空间属性。这就是为什么您必须指定具有和不具有android:名称空间的每个属性。

+0

实际上我做到了。虽然..没有效果..我失去了几个小时发现清除皮棉标记去除了警告日食给了我。你可以指定需要用android:命名空间再次编写的属性..也许我做错了什么。 – BlastFire

+0

你使用正确的目录吗?你应该在'values-11'中至少有'values','values-v11'和android命名空间属性。 – JRomero

+0

好吧,我有AB样式生成器生成的两个值目录。 值和值-v14。在值属性中使用没有android:名称空间和值-v14 WITH android: – BlastFire

相关问题