一直感觉 AppCompat 的 Theme 之间的关系有点乱,整理一下。
仅供示意,不同版本 AppCompat 可能有差异,但原理是一样的,跟着代码找就可以了。
Platform.AppCompat 和 Base.Theme.AppCompat.* 没有画在 values 下,也没有放在 values-v11 或 values-v21。不是因为它们不在这些目录下,恰恰相反,它们在每个目录下都存在。
以 Platform.AppCompat 为例,在 values 目录下,parent 是 android:theme,在 values-v11 下,parent 是 Platform.v11.AppCompat。
正因如此,Base.V7.Theme.AppCompat 只需指定 parent 为 Platform.AppCompat,运行时根据 Platform.AppCompat 就能得到更上一级合适的 parent。