CardView中app:前缀与card_view:前缀的区别是什么?
CardView两种写法的区别
先明确核心:两种写法功能上完全等价,最终都会正确识别CardView的自定义属性,区别主要在命名空间的使用习惯和细节上:
命名空间的定义范围
写法A里的app:前缀,通常是在整个布局的根节点就定义了xmlns:app="http://schemas.android.com/apk/res-auto",这个命名空间可以被布局里所有控件共用;而写法B是在CardView自身节点上定义了card_view专属命名空间,作用域只限于这个CardView节点(及它的子节点,如果有的话)。属性的可读性
card_view:前缀更有针对性,一眼就能看出这些属性属于CardView;而app:是通用前缀,布局里如果有多个第三方控件(比如RecyclerView、MaterialButton)的自定义属性都用app:的话,不看属性名很难直接区分归属控件。使用习惯的演变
早期CardView还在support库阶段,很多教程习惯用card_view:前缀来区分它的自定义属性;后来AndroidX普及后,app:前缀成为行业通用做法——所有第三方库的自定义属性都可通过res-auto命名空间引用,用统一的app:前缀不用给每个控件单独定义专属命名空间,更简洁。必要前提
写法A能正常运行,肯定是你的布局根节点已经提前定义了app命名空间,否则会出现属性解析错误。
内容的提问来源于stack exchange,提问作者Lechius
相关产品推荐
相关产品推荐

