Стиль ActionCompat Actionbar

В настоящее время я пытаюсь использовать AppCompat вместо ActionbarSherlock. На устройствах Android 4+ я не сталкиваюсь с какими-либо проблемами, так как используются обычные темы Actionbar и Holo.

ICS Actionbar

Однако на более низких версиях Android этот странный вид возникает при использовании Theme.AppCompat.Light.

Standard AppCompat Actionbar

Панель действий белая и имеет синюю линию внизу.

Я смог исправить это, используя Генератор стилей Android Action Bar от Android Asset Studio, чтобы генерировать пользовательскую тему с твердой панелью действий вместо прозрачного.

AppCompat with custom drawables from Style Generator

Сравнивая его с панелью действий, которую я получил при использовании ActionbarSherlock, она все равно выглядит уродливой, хотя.

ActionbarSherlock

В панели действий AppCompat есть эта очень четкая черная линия между собой и содержимым активности, в то время как запасная панель ICS или одна из ActionbarSherlock имеют более мягкий переход от Actionbar к макету.

Как я могу создать стиль Actionbar, чтобы он выглядел так же, как на Android 4 +?

Ответ 1

Вам нужно создать свой собственный стиль с изображением, которое вы хотите поместить на фон. В вашем стиле .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

Ответ 2

Я использую этот код:

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

Я надеюсь, что этот код очень поможет.

Ответ 3

Вы должны переопределить тему панели действий

Ответ 4

Чтобы показать пользовательский значок и цвет в 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

Чтобы показать значок приложения и текст, вы также вставьте его в свою активность.

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