@和?的区别

在设置style的时候既可以使用 @ 也可以使用 ?
例如:

style="@android:style/Widget.ProgressBar.Horizontal"
style="?android:attr/progressBarStyleHorizontal"

两者的区别:
●使用@表示使用固定的style,而不会跟随Theme改变,这个style可以在对应的styles.xml中找到。
●使用?表示从Theme中查找引用的资源名,这个google叫预定义样式,用在多主题时的场景,属性值会随着主题而改变。(?需要和attr配合使用)。

例如,上面的progressBarStyleHorizontal在不同的Theme中引用的style是不同的:

\platforms\android-25\data\res\values\themes.xml
<style name="Theme">
<item name="progressBarStyleHorizontal">@style/Widget.ProgressBar.Horizontal</item>

\platforms\android-25\data\res\values\themes_holo.xml
<style name="Theme.Holo">
<item name="progressBarStyleHorizontal">@style/Widget.Holo.ProgressBar.Horizontal</item>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容