提问:
android sdk doc中提到了关于xml引用资源是如下格式:
@[<package_name>:]<resource_type>/<resource_name>
但是,在源码中也发现了如下的引用方式:
@*android:style/Theme.Dialog.Alert(\packages\apps\Settings\AndroidManifest.xml)
非常奇怪的是包名前面的那个“*”是有何作用!不可能是写错吧!搜了一下还挺多地方android包名前都添加了一个“*”符号!
答案:
Theme.Dialog.Alert
因为Alert是非public的。
使用*号的话与@的区别在于可以调用<sdk_path>\platforms\android-8\data\res\values\themes.xml中所有的已定义的theme.
而不使用*只能调用在<sdk_path>\platforms\android-8\data\res\values\public.xml中声明的样式或主题。
从某种意义上来说,没在public.xml中声明的资源是google不推荐使用的。