今日整理项目,在一个下载功能模块,有一个进度条布局,如下:
忽然发现应该记录下 ?android 和 @android 区别!
在引用资源时,例如在设置style的时候既可以使用@也可以使用?
style="?android:attr/progressBarStyleHorizontal"
style="@android:style/Widget.ProgressBar.Horizontal"
使用@表示使用固定的style,而不会跟随Theme改变,这style可以在对应的style.xml中找到。
使用?表示从Theme中查找引用的资源名,这个google叫预定义样式,用在多主题时的场景,属性值会随着主题而改变。(?需要和attr配合使用),例如上面的progressBarStyleHorizontal,查看\platforms\Android-23\data\res\values\themes.xml文件,可以看到在不同的theme中,progressBarStyleHorizontal引用的style是不同的。
“@android:style/主题"和”@style/android:主题"等同
“?android:attr/属性"和”?attr/android:属性"等同