Стиль 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);