引用主题属性
文档里写的引用主题属性的方法如下:
?[<package_name>:][<resource_type>/]<resource_name>
这种引用方法只能在xml文件中使用。
?表示引用属性,当使用这个属性的时候,资源工具会从当前的主题样式中查找这个资源名称,可以不用指名具体是类型。
用于主题的样式如下:
<style name="Theme.XXXX" parent="@android:style/Theme.Light.NoTitleBar"><item name="android:windowAnimationStyle">@style/Animation.Activity.XXXX</item><item name="android:textColorHint">@color/red</item></style>
其中有一个属性的名称为:android:textColorHint,如果想在xml文件中引用这个属性的值,做法如下:
<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="主 页"android:textColor="?android:textColorHint"/>
这样这个TextView的字体颜色就会和主题样式的<item name="android:textColorHint"></item>的值一样了
把主题样式和TextView的写法改成如下,也可以达到要求:
<style name="Theme.XXXX" parent="@android:style/Theme.Light.NoTitleBar"><item name="android:windowAnimationStyle">@style/Animation.Activity.XXXX</item><item name="android:textColorHint">@color/red</item><item name="android:textColor">@color/red</item></style><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="主 页"/>
这样的话,TextView的颜色会和主题里的android:textColor的颜色的值一样,如果主题样式中没有属性android:textColor,则TextView会显示其默认值
?
注意:这个默认值和不设主题的默认值是不一要样的,如果不设主题样式,则其默认值由机器来决定,如果设置了主题样式,但主题样式中没有这个属性android:textColor,则应该是由其内部的代码所决定的。