【问题标题】:Custom ActionBar not workinh in android 4 or higher自定义操作栏在 android 4 或更高版本中不起作用
【发布时间】:2014-02-11 21:20:27
【问题描述】:

我使用此网站为我的应用生成自定义操作栏。

在旧设备(API 9,10 等)上运行良好,但在 android 4 中它显示默认的 HoloLight ActionBar。

这是来自该网站的自定义样式。

<resources>

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

    <item name="android:actionBarItemBackground">@drawable/selectable_background_politify</item>
    <item name="android:popupMenuStyle">@style/PopupMenu.Politify</item>
    <item name="android:dropDownListViewStyle">@style/DropDownListView.Politify</item>
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Politify</item>
    <item name="android:actionDropDownStyle">@style/DropDownNav.Politify</item>
    <item name="android:actionBarStyle">@style/ActionBar.Transparent.Politify</item>
    <item name="android:actionModeBackground">@drawable/cab_background_top_politify</item>
    <item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_politify</item>
    <item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Politify</item>

    <item name="actionBarItemBackground">@drawable/selectable_background_politify</item>
    <item name="popupMenuStyle">@style/PopupMenu.Politify</item>
    <item name="dropDownListViewStyle">@style/DropDownListView.Politify</item>
    <item name="actionBarTabStyle">@style/ActionBarTabStyle.Politify</item>
    <item name="actionDropDownStyle">@style/DropDownNav.Politify</item>
    <item name="actionBarStyle">@style/ActionBar.Transparent.Politify</item>
    <item name="actionModeBackground">@drawable/cab_background_top_politify</item>
    <item name="actionModeSplitBackground">@drawable/cab_background_bottom_politify</item>
    <item name="actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Politify</item>



</style>

<style name="ActionBar.Solid.Politify" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="android:background">@drawable/ab_solid_politify</item>
    <item name="android:backgroundStacked">@drawable/ab_stacked_solid_politify</item>
    <item name="android:backgroundSplit">@drawable/ab_bottom_solid_politify</item>
    <item name="android:progressBarStyle">@style/ProgressBar.Politify</item>

    <item name="background">@drawable/ab_solid_politify</item>
    <item name="backgroundStacked">@drawable/ab_stacked_solid_politify</item>
    <item name="backgroundSplit">@drawable/ab_bottom_solid_politify</item>
    <item name="progressBarStyle">@style/ProgressBar.Politify</item>
</style>

<style name="ActionBar.Transparent.Politify" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="android:background">@drawable/ab_transparent_politify</item>
    <item name="android:progressBarStyle">@style/ProgressBar.Politify</item>

    <item name="background">@drawable/ab_transparent_politify</item>
    <item name="progressBarStyle">@style/ProgressBar.Politify</item>
</style>

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

    <item name="popupMenuStyle">@style/PopupMenu.Politify</item>
    <item name="dropDownListViewStyle">@style/DropDownListView.Politify</item>
</style>

这是我导入此样式的清单部分。

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Politify" >

【问题讨论】:

    标签: android android-actionbar android-custom-view


    【解决方案1】:

    根据Example Action Bar Theme

    请注意,每个操作栏样式属性都有两个版本。第一个在属性名称上包含 android: 前缀,以支持在框架中包含这些属性的 API 级别 11 及更高级别。第二个版本不包含android: 前缀,适用于旧版本的平台,系统在该版本上使用支持库中的样式属性。每个的效果都是一样的。

    由于您只有无前缀版本,因此样式仅适用于

    【讨论】:

    • 我用更改编辑我的答案。它仍然没有工作。事实上,在我放置“android:..”的地方,我得到了同样的错误,比如“required API 13,current is 8”。即使有提示,我也运行它,但没有任何改变。难道我又做错了什么?
    • 这些是Lint 错误,指出android: 前缀在较低的API 级别上没有任何作用。您可以放心地忽略它们(因为系统将忽略它不知道的属性)或将您的 styles.xml 拆分为默认的(只有无前缀的)和 values-v11 中的一个(或 values-v13等),直到您不再有 lint 错误。
    • 感谢它现在工作正常。我唯一的问题是标题的颜色。事实上,较新的设备似乎将标题和图标连接在同一个图标中。有解决办法吗?
    • 标题文本和标题选择背景的颜色应该与操作栏项目匹配 - 你指的是什么颜色?
    • 在旧设备中,活动标题的颜色是紫色(正确的颜色),但在新设备中它仍然是黑色(默认的 Holo Light 颜色)。在较旧的设备中,当我单击图标时只是图标,但在较新的设备中,当我单击图标(如向上按钮)时,它会将图标和标题显示为同一个可点击区域。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多