2014-02-08 2 views
3

Я делаю Android-приложение и использую android-support-v7-appcompat, чтобы убедиться, что мое приложение поддерживает панели действий с версии 2.2 и выше.android: windowActionBarOverlay & android: действияBarStyle требует api level 11

мне нужно сделать накладку панели действий и использовать полупрозрачный фон, так что я изменил styles.xml к этому коду:

<resources> 

    <style name="AppBaseTheme" parent="android:Theme.Light"> 
     <!-- 
      Theme customizations available in newer API levels can go in 
      res/values-vXX/styles.xml, while customizations related to 
      backward-compatibility can go here. 
     --> 
    </style> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme"> 
     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 

    <!-- TRANSLUCENT THEME --> 
    <style name="TranslucentAB" parent="Theme.AppCompat.Light"> 
     <item name="windowActionBarOverlay">true</item> 
     <item name="android:windowActionBarOverlay">true</item> 
     <item name="android:actionBarStyle">@style/BlackBar</item> 
     <item name="actionBarStyle">@style/BlackBar</item> 
    </style> 

    <!-- TRANSLLUCENT COLOR STYLE --> 
    <style name="BlackBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
     <item name="android:background">@drawable/halfblack</item> 
     <item name="background">@drawable/halfblack</item> 
    </style> 

</resources> 

и модифицированный файл манифеста, чтобы адаптировать новый ActionBar как:

android:theme="@style/TranslucentAB" 

проблема заключается в том, что следующие две строки кода требуется уровень API 11 и выше:

<item name="android:windowActionBarOverlay">true</item> 
<item name="android:actionBarStyle">@style/BlackBar</item> 

, но мне нужно поддерживать API уровня 8 и выше. Если я удалю эти две строки, приложение отлично работает на Android 2.2 с черной полупрозрачной панелью действий. Но если я запустил приложение в Android 4.3, приложение запускается с сплошной белой панелью действий. halfblack - это всего лишь файл png в папке с возможностью скачивания с 70% черного цвета.

ответ

6

Найдено решение моей проблемы:

Я должен сделать отдельный styles.xml в Рез/ценностей-v11 поддерживать такую ​​же функциональность в Android 3.0 и выше

5

Чтобы использовать действие бар накладку с библиотекой поддержки, выполните следующие действия:

<!-- Support library compatibility --> 
    <item name="windowActionBarOverlay">true</item> 

Обратите внимание, как имя стиля не включает префикс android:.

+0

Спасибо за ответ Грега, но это проблема. Если я сделаю так, как вы сказали, чем оверлей, работает только в Android 2.2, а не в 4.3, поэтому я должен использовать android: windowsActionBarOverlay. Я должен вручную удалить ошибки lint, вызванные этим, а затем запустить приложение, чтобы поддерживать наложения в Android 3.0 и выше. Есть ли способ подавить ошибки api в XML? – Rakesh

+0

Хммм это ваша тема, вытекающая из Theme.AppCompat? (Должен быть). И вы должны использовать windowActionBarOverlay без андроида: префикс. Вы правы, другой из них приведет к ошибкам api, которые так же разработаны. –

+1

Найдено решение моей проблемы: я должен сделать отдельный styles.xml в разрешении/значение-v11 поддерживать такую ​​же функциональность в Android 3.0 и выше – Rakesh

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