Android资源文件夹下面values/style.xmlvalues-v19/style.xmlvalues-v21/style.xml主题调用规则

Posted amoshcxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android资源文件夹下面values/style.xmlvalues-v19/style.xmlvalues-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,尝试修复找到了这个问题)

以上是关于Android资源文件夹下面values/style.xmlvalues-v19/style.xmlvalues-v21/style.xml主题调用规则的主要内容,如果未能解决你的问题,请参考以下文章

Android 资源文件匹配

Android获取图片资源的4种方式

深入理解 Android 模块化里的资源冲突

深入理解 Android 模块化里的资源冲突

初学Android 使用Drawable资源之使用ClipDrawable资源 十六

android——实现多语言支持