“@”符号
“@”表示引用资源,声明这是一个资源引用,格式为:@[package:]type/name
举例
比如引用string资源:
- android:text = “@android:string/title”表示引用android系统里面名为title的字符串
- android:text = “@string/title”表明引用应用内部的字符串
注意
android的资源type格式有:string,dimen,drawable,layout,color,anim,animator,mipmap,raw,id,style,attr,array等
对于id, 可以用@+id表明创建一个id
“?”符号
“?”表示引用主题属性,格式为:?[namespace:]type/name,当您使用这个标记,你所提供的资源名必须能够在主题属性中找到,
举例
android:background="?attr/colorPrimary"
从AndroidManifest.xml里面找到应用的主题为:
android:theme="@style/AppTheme"
在AppTheme主题里面定义了colorPrimary属性:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
……
<item name="colorPrimary">@color/colorPrimary</item>
……
注意
如果是应用内定义的属性,[namespace:]type可以省略,
如:
android:background="?attr/colorPrimary"
可以简写为:
android:background="?colorPrimary"
如果是引用系统定义的属性,则不能省略:
android:background="?android:attr/colorPrimary"