美文网首页
Theme与Style源码结构浅析

Theme与Style源码结构浅析

作者: 黑色海鸥 | 来源:发表于2018-06-20 20:50 被阅读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有两种方式来使用,具体如下

  • 在AndroidManifest.xml中<application>或者<activity>节点设置android:theme属性;

  • 在Java代码中调用setTheme()方法设置Activity的Theme(须在setContentView()前设置;

参考

工匠若水

相关文章

网友评论

      本文标题:Theme与Style源码结构浅析

      本文链接:https://www.haomeiwen.com/subject/ktffyftx.html