AppCompat Actionbar样式

时间:2013-10-19 09:21:02

标签: android android-actionbar actionbarsherlock android-appcompat

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

ICS Actionbar

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

Standard AppCompat Actionbar

操作栏为白色,下方有蓝线。

我能够使用Android Asset Studio中的Android Action Bar Style Generator来生成一个自定义主题,其中包含一个可靠的Actionbar而不是透明的主题。

AppCompat with custom drawables from Style Generator

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

ActionbarSherlock

AppCompat Actionbar在它自身和活动内容之间有一条非常尖锐的黑线,而ICS的动作栏或ActionbarSherlock的动作栏从动作栏到布局的转换更为柔和。

如何将Actionbar的样式设置为真正与Android 4 +上的样式相同?

4 个答案:

答案 0 :(得分:17)

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

<强>值/ styles.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补丁图像:

9-patch image

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

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

答案 2 :(得分:1)

您必须覆盖操作栏的主题

答案 3 :(得分:0)

显示自定义图标&amp; AppCompatActivity 中的颜色我们可以粘贴此代码:

<强>值/ styles.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

中的自定义背景图片

显示应用图标&amp;您也可以将文字粘贴到您的活动中。

        // set action Bar icon & Text
    ActionBar mActionBar = getSupportActionBar();
    mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE
            | ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);