it-swarm.com.ru

AppCompat Actionbar стилей

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

ICS Actionbar

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

Standard AppCompat Actionbar

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

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

AppCompat with custom drawables from Style Generator

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

ActionbarSherlock

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

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

12
Bertram Sherwood

Вы должны создать свой собственный стиль с изображением, которое вы хотите поставить на фон. В вашем style.xml вы должны создать что-то похожее на это:

values ​​/ 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>

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

17
hardartcore

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

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

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

1
ishan jain

Чтобы показать пользовательский значок и цвет в AppCompatActivity мы можем вставить этот код:

values ​​/ 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>

values-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);
0
Shihab Uddin