Android資原始檔夾下面values/style.xml、values-v19/style.xml、values-v21/style.xml主題呼叫規則
阿新 • • 發佈:2019-02-09
概述
values-v19/style.xml—對應api19+手機型號在此呼叫。
values-v21/style.xml—對應api21+手機型號在此呼叫。
values/style.xml—對應values-v19和values-v21的style.xml中沒有對應主題時預設在此呼叫。
關注點
以沉浸式通知欄主題ColorTranslucentTheme,繼承AppCompatActivity為例。
沉浸式主題有兩種寫法:
方法一:
values/style.xml
<style name="ImageTranslucentTheme" parent="AppTheme" >
<!--在Android 4.4之前的版本上執行,直接跟隨系統主題-->
</style>
values-v19/style.xml
<style name="ImageTranslucentTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation" >true</item>
</style>
values-v21/style.xml
<style name="ImageTranslucentTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowTranslucentNavigation">true</item>
<!--Android 5.x開始需要把顏色設定透明,否則導航欄會呈現系統預設的淺灰色-->
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
方法二:
values/style.xml
<style name="ColorTranslucentTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>
<item name="android:windowTranslucentNavigation" tools:targetApi="kitkat">true</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent</item>
</style>
自己專案中使用哪種方法都可以,但如果你的專案作為另一個專案的aar就要注意了:
要與主專案的使用方法相同。
(有次要實現ios樣式的沉浸式通知欄,我運用方法一來實現的,測試沒問題,但作為aar匯入另一個專案後在android4.1手機上出現了Crash,嘗試修復找到了這個問題)