问题描述:在下面的DestParkActivity的主题下使用TextView默认情况下是白色的,当你在<TextView android:textColor=”#000000”/>的时候也不会将字体变成黑色.
针对以上问题,我查看了Theme的源码:首先看Theme.AppCompat.NoActionBar的源码如下:
针对以上问题,我查看了Theme的源码:首先看Theme.AppCompat.NoActionBar的源码如下:
发现这里的style没有parent属性,在这里我要说一下对于Theme的继承有两种情况:一种是parent,另一种便是.的形式继承;所以根据Theme.AppCompat.NoActionBar继承于Theme.AppCompat,如下:
在这里发现Theme.AppCompat是一个但标签,在点父级Base.Theme.AppCompat,如下:
和上面一样,里面并没有内容:在点父级Base.V7.Theme.AppCompat,如下:
在Base.V7.Theme.AppCompat主题下便出现了Item的形式,我们都知道设置TextView的字体颜色是android:textColor,经过查找发现这里并没有,于是在点击父级Platform.AppCompat如下:
在这里我们也没有看到android:textColor的item,但是意外的看到android:textAppearance的item,点进去发现:
又是单标签,点击父级Base.TextAppearance.AppCompat,如下:
哈哈,终于找到了,原来是在Base.TextApearance.AppCompat主题里面。
经过这样的查找,你有没有发现android:textColor的item并不是在Theme.AppCompat.NoActionBar父级主题里面,而是在父级主题里面有一个<item name=”android:textAppearance”>@TextAppearance.AppCompat<item>是在TextAppearance.AppCompat父主题里面。
这也就解释了为什么不能在Theme.AppCompat.NoActionBar主题下TextView控件中用android:textColor,因为就没有android:textColor的item,而是通过设置android:textAppearance来进行更改