12

我目前正在尝试使用 AppCompat 而不是 ActionbarSherlock。在 Android 4+ 设备上我没有遇到任何问题,因为使用的是普通的 Actionbar 和 Holo 主题。

ICS 操作栏

然而,在较低的 Android 版本上,使用 Theme.AppCompat.Light 时会出现这种奇怪的外观。

标准 AppCompat 操作栏

操作栏是白色的,下面有一条蓝线。

我可以通过使用来自 Android Asset Studio 的Android Action Bar Style Generator来解决这个问题,以生成一个带有实体 Actionbar 而不是透明的自定义主题。

AppCompat 与 Style Generator 中的自定义可绘制对象

当将它与我使用 ActionbarSherlock 时得到的 Actionbar 进行比较时,它仍然有点难看。

动作栏夏洛克

AppCompat Actionbar 在其自身和活动内容之间有一条非常清晰的黑线,而 ICS 的股票 Actionbar 或 ActionbarSherlock 的 Actionbar 从 Actionbar 到布局的过渡更柔和。

如何设置 Actionbar 的样式,让它看起来像 Android 4+ 上的那种?

4

4 回答 4

18

您必须使用要放在背景上的图像创建自己的样式。在您的 style.xml 中,您应该创建类似于以下内容的内容:

值/样式.xml

    <style name="Theme.MyAppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/ActionBarTabStyle.MyAppTheme</item>
    </style>

    <style name="ActionBar.Solid.MyAppTheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="background">@drawable/your_background_image</item>
    </style>

值-v14/styles.xml

    <style name="Theme.MyAppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/ActionBarTabStyle.MyAppTheme</item>
    </style>

    <style name="ActionBar.Solid.MyAppTheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="android:background">@drawable/your_background_image</item>
    </style>

你可以使用这个 9-patch 图像:

9 补丁图像

于 2013-10-19T09:34:49.853 回答
3

我使用这段代码:

<resources>

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/ActionBarTheme</item>
</style>

<style name="ActionBarTheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="background">@color/red_action_bar</item>
</style>

</resources>

我希望这段代码有很大帮助。

于 2015-06-19T12:23:53.250 回答
1

您必须覆盖操作栏的主题

于 2013-10-19T11:49:39.510 回答
0

要在AppCompatActivity中显示自定义图标和颜色,我们可以粘贴以下代码:

值/样式.xml

<resources>

 <style name="Theme.MyAppTheme" parent="@style/Theme.AppCompat">
    <item name="actionBarStyle">@style/ActionBar.Solid.MyAppTheme</item>
    <item name="icon">@drawable/ic_launcher</item>
</style>

<style name="ActionBar.Solid.MyAppTheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="background">@color/white</item>
</style>

值-v14/styles.xml

<resources>

<style name="Theme.MyAppTheme" parent="@style/Theme.AppCompat.Light">
    <item name="android:actionBarStyle">@style/ActionBar.Solid.MyAppTheme</item>
       <item name="icon">@drawable/ic_launcher</item>
</style>

<style name="ActionBar.Solid.MyAppTheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="android:background">@color/app_titile_bar_color</item>
</style>

您也可以使用来自@drawable/your_pic.png 的自定义背景图片

要显示应用程序图标和文本,您还可以将其粘贴到您的活动中。

        // set action Bar icon & Text
    ActionBar mActionBar = getSupportActionBar();
    mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE
            | ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);
于 2015-10-04T12:42:44.497 回答