2014-02-11 3 views
0

Я использовал этот сайт для создания пользовательского панели действий для своего приложения.Пользовательский ActionBar не работает в android 4 или выше

Он отлично работает на старых устройствах (API 9,10 и т. Д.), Но в android 4 он показывает по умолчанию HoloLight ActionBar.

Вот мои пользовательские стили, которые пришли с сайта.

<resources> 

<style name="Theme.Politify" parent="@style/Theme.AppCompat.Light"> 

    <item name="android:actionBarItemBackground">@drawable/selectable_background_politify</item> 
    <item name="android:popupMenuStyle">@style/PopupMenu.Politify</item> 
    <item name="android:dropDownListViewStyle">@style/DropDownListView.Politify</item> 
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Politify</item> 
    <item name="android:actionDropDownStyle">@style/DropDownNav.Politify</item> 
    <item name="android:actionBarStyle">@style/ActionBar.Transparent.Politify</item> 
    <item name="android:actionModeBackground">@drawable/cab_background_top_politify</item> 
    <item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_politify</item> 
    <item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Politify</item> 

    <item name="actionBarItemBackground">@drawable/selectable_background_politify</item> 
    <item name="popupMenuStyle">@style/PopupMenu.Politify</item> 
    <item name="dropDownListViewStyle">@style/DropDownListView.Politify</item> 
    <item name="actionBarTabStyle">@style/ActionBarTabStyle.Politify</item> 
    <item name="actionDropDownStyle">@style/DropDownNav.Politify</item> 
    <item name="actionBarStyle">@style/ActionBar.Transparent.Politify</item> 
    <item name="actionModeBackground">@drawable/cab_background_top_politify</item> 
    <item name="actionModeSplitBackground">@drawable/cab_background_bottom_politify</item> 
    <item name="actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Politify</item> 



</style> 

<style name="ActionBar.Solid.Politify" parent="@style/Widget.AppCompat.Light.ActionBar.Solid"> 
    <item name="android:background">@drawable/ab_solid_politify</item> 
    <item name="android:backgroundStacked">@drawable/ab_stacked_solid_politify</item> 
    <item name="android:backgroundSplit">@drawable/ab_bottom_solid_politify</item> 
    <item name="android:progressBarStyle">@style/ProgressBar.Politify</item> 

    <item name="background">@drawable/ab_solid_politify</item> 
    <item name="backgroundStacked">@drawable/ab_stacked_solid_politify</item> 
    <item name="backgroundSplit">@drawable/ab_bottom_solid_politify</item> 
    <item name="progressBarStyle">@style/ProgressBar.Politify</item> 
</style> 

<style name="ActionBar.Transparent.Politify" parent="@style/Widget.AppCompat.Light.ActionBar"> 
    <item name="android:background">@drawable/ab_transparent_politify</item> 
    <item name="android:progressBarStyle">@style/ProgressBar.Politify</item> 

    <item name="background">@drawable/ab_transparent_politify</item> 
    <item name="progressBarStyle">@style/ProgressBar.Politify</item> 
</style> 

<!-- this style is only referenced in a Light.DarkActionBar based theme --> 
<style name="Theme.Politify.Widget" parent="@style/Theme.AppCompat"> 
    <item name="android:popupMenuStyle">@style/PopupMenu.Politify</item> 
    <item name="android:dropDownListViewStyle">@style/DropDownListView.Politify</item> 

    <item name="popupMenuStyle">@style/PopupMenu.Politify</item> 
    <item name="dropDownListViewStyle">@style/DropDownListView.Politify</item> 
</style> 

А вот часть манифеста, что я импортировать этот стиль.

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/Theme.Politify" > 

ответ

0

Пер с Example Action Bar Theme:

Обратите внимание, что есть две версии для каждого свойства панели действий стиля. Первый включает префикс android: в имени свойства для поддержки уровней API 11 и выше, которые включают эти свойства в структуру. Вторая версия не включает префикс android: и предназначена для более старых версий платформы, на которых система использует свойство стиля из библиотеки поддержки. Эффект для каждого из них одинаковый.

Поскольку у вас есть только не префиксные версии, стили применяются только к < 11 уровням API.

+0

Я редактирую свой ответ с изменениями. Он все еще не работал. На самом деле, когда я помещаю «андроид: ..», у меня такие же эры, как «требуемый API 13, ток - 8». Я запустил его даже с подсказками, но ничего не изменилось. Я снова делаю что-то неправильно? – user3249186

+0

Это ошибки [Lint] (http://developer.android.com/tools/debugging/improving-w-lint.html), в которых утверждается, что префикс 'android:' ничего не делает на более низких уровнях API. Вы можете смело игнорировать их (поскольку система будет игнорировать атрибуты, о которых она не знает) или разделить ваш 'styles.xml' на стандартный (который будет иметь только не префикс) и один в' values-v11' (или 'values-v13' и т. д.) до тех пор, пока у вас не будет больше ошибок lint. – ianhanniballake

+0

Спасибо, сейчас отлично работает. Единственная проблема, которая у меня есть, это цвет названия. Фактически, новые устройства, похоже, соединяют заголовок и значок в том же значке. Есть решение для этого? – user3249186

Смежные вопросы