1. 程式人生 > >Android資原始檔夾下面values/style.xml、values-v19/style.xml、values-v21/style.xml主題呼叫規則

Android資原始檔夾下面values/style.xml、values-v19/style.xml、values-v21/style.xml主題呼叫規則

概述

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,嘗試修復找到了這個問題)