我正在製作一個android應用程序並使用android-support-v7-appcompat來確保我的應用程序支持從android 2.2及更高版本開始的操作欄。android:windowActionBarOverlay&android:actionBarStyle需要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>
和修改清單文件,以適應新的動作條爲:
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只是一個帶有70%黑色的可繪製文件夾中的png文件。
感謝回答格雷格但是這就是問題所在。如果我像你說的那樣覆蓋只是在Android 2.2中,而不是在4.3中,這就是爲什麼我必須使用android:windowsActionBarOverlay。我必須手動刪除由此造成的lint錯誤,然後運行該應用程序才能支持android 3.0及更高版本中的覆蓋。有什麼辦法來抑制XML中的api錯誤嗎? – Rakesh
嗯,你的主題來自Theme.AppCompat? (它應該是)。而且你應該只使用windowActionBarOverlay而不使用android:前綴。你是正確的,另一個會導致API設計錯誤。 –
找到解決我的問題: 我不得不在水庫單獨styles.xml /值-V11支持的Android 3.0及以上 – Rakesh