Theme与Style源码结构浅析

2018-06-20  本文已影响12人  黑色海鸥

追根溯源Theme、Style等根源

假设app的主题

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

继承了Theme.AppCompat.Light.DarkActionBar这个style,这玩意又在framework的support v7包下res的themes.xml文件中,一层一层进入,最后发现追踪下去到了该包下的themes_base.xml中;代码如下

<style name="Platform.AppCompat" parent="android:Theme">
       <item name="android:windowNoTitle">true</item>

       <!-- Window colors -->
       <item name="android:colorForeground">@color/foreground_material_dark</item>
       <item name="android:colorForegroundInverse">@color/foreground_material_light</item>

       .......
</style>

接近400多个item属性,这也就是我们Android关于Theme的开山鼻祖了,在我们自定义时其实来这看比去API查还方便呢,有需求来这里搞就行;

Theme、Style加载时机及加载源码浅析

对于Theme有两种方式来使用,具体如下

参考

工匠若水

上一篇下一篇

猜你喜欢

热点阅读