引用资源时,使用@还是?的区别,例如在设置style的时候既可以使用@也可以使用?

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

使用@表示使用固定的style,而不会跟随Theme改变,这style可以在对应的style.xml中找到。 
而?表示从Theme中查找引用的资源名,例如上面的progressBarStyleHorizontal,查看\platforms\Android-23\data\res\values\themes.xml文件,可以看到在不同的theme中,progressBarStyleHorizontal引用的style是不同的。如

在Theme中

<item name="progressBarStyleHorizontal">@style/Widget.ProgressBar.Horizontal</item>

Theme.Holo中为

 <item name="progressBarStyleHorizontal">@style/Widget.Holo.ProgressBar.Horizontal</item>

1、在styles.xml中定义style标签的parent的时候

自带属性,以下使用方式等同

<style name="AppThemeSdk1" parent="@android:style/Widget.ProgressBar.Horizontal"> </style> <style name="AppThemeSdk2" parent="android:style/Widget.ProgressBar.Horizontal"> </style> <!--studio 不提示 但不报错 可用--> <style name="AppThemeSdk3" parent="android:style/Widget.ProgressBar.Horizontal"> </style> <!--studio 不提示 但不报错 可用--> <style name="AppThemeSdk4" parent="android:Widget.ProgressBar.Horizontal"> </style>

自定义属性,以下使用方式等同

   <style name="AppThemeCustom1" parent="Widget.AppCompat.ProgressBar.Horizontal"> </style> <style name="AppThemeCustom2" parent="@style/Widget.AppCompat.ProgressBar.Horizontal"> </style> <!--studio 不提示 但不报错 可用--> <style name="AppThemeCustom3" parent="style/Widget.AppCompat.ProgressBar.Horizontal"> </style>

2、style作为xml中定义的属性时候

<!--自定义的-->
@style/Widget.AppCompat.ProgressBar.Horizontal
<!--系统自带的-->
@android:style/Widget.ProgressBar.Horizontal

3、? attr

<!--系统自带的 ,以下使用方式等同-->
"?android:属性"
"?android:attr/属性"
<!--自定义的  ,以下使用方式等同-->
"?attr/属性"
"?属性"

另外: 
当引用系统自带的style和attr时

"@android:style/主题"和"@style/android:主题"等同"?android:attr/属性"和"?attr/android:属性"等同

from:http://blog.csdn.net/RichieZhu/article/details/52490521

【转】 Android xml中 @和?区别,style和attr小结相关推荐

  1. Android XML中引用自定义内部类view的四个why

    今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类v ...

  2. android xml 中include的用法,Android include使用

    安卓中,布局include主要是重用布局作用,当一个界面配置较多情况下,采用include可以大大增强  其可读性. eg:主布局include一个layout01布局,layout01布局中incl ...

  3. android xml中设置水平虚线及竖直虚线

    水平线背景 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=" ...

  4. android xml中attribute,android – 我无法从我的XML资源中读取AttributeSet

    问题是对解析器功能的误解.行后: XmlResourceParser parser = r.getXml(R.layout.testcameraoverlay); 解析器位于文档的开头,并且尚未读取任 ...

  5. Android开发之Theme、Style探索及源码浅析

    1 背景 前段时间群里有伙伴问到了关于Android开发中Theme与Style的问题,当然,这类东西在网上随便一搜一大把模板,所以关于怎么用的问题我想这里也就不做太多的说明了,我们这里把重点放在理解 ...

  6. 字体系列 (三):Xml中的字体 font ttf

    在本系列的上一篇文章中,我们对 Typeface 进行了深入的解析,还没有看过上一篇文章的朋友,建议先去阅读 Android字体系列 (二):Typeface完全解析.接下来我们看下 Google 推 ...

  7. Android xml里面product的值来自哪里以及怎么影响编译?

       Android xml里面product的值来自哪里以及怎么影响编译? 前言   做过Android Settings及Android原生应用开发的小伙伴们应该都知道,在其xml文件里面有根据p ...

  8. Android xml资源文件中@、@android:type、@*、?、@+含义和区别

    一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...

  9. Android 开发中Layout_Margin与padding的区别以及Layout_gravity与gravity的区别

    Layout_Margin与padding的区别以及Layout_gravity与gravity的区别 平时开发中这几个属性是我们经常使用的几个属性,偶尔脑子一糊涂,就容易弄混这些属性,下面,我就仔细 ...

  10. fileoutputstream路径 android,Android编程中FileOutputStream与openFileOutput()的区别分析

    本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如 ...

最新文章

  1. 第十一天2017/04/25(1、二叉树)
  2. IDEA下maven项目Plugins和Dependencies红线
  3. cpu频率_AMD EPYC米兰处理器样品曝光:64核128线程的Zen 3芯,频率可达3.5GHz_游戏硬件CPU...
  4. 蓝桥杯2017初赛-分巧克力-二分
  5. 配置防火墙打开 80 端口
  6. 前端学习(3267):js中this的指向二
  7. 课堂练习-水帖之王(水王)
  8. android radiobutton底部导航,android中Fragment+RadioButton实现底部导航栏
  9. BZOJ_2243 [SDOI2011]染色 【树链剖分+线段树】
  10. android studio生成jks,Android Studio生成keystore签名文件步骤讲解
  11. 通州区机器人比赛活动总结_机器人社团活动课总结
  12. 用两个栈实现队列(Java)
  13. 三类医疗器械进销存软件-医药供应链系统
  14. 用学习逃避成长,听新知缓解焦虑
  15. ie浏览器java 脚本下载_用IE浏览器时不断出现Java活动脚本功能出错问题
  16. Python ------ return返回值等
  17. 【c++中内存拷贝函数(C++ memcpy)详解】
  18. 每晚定时重启IIS和数据库服务可节省服务器资源
  19. 【高效程序员系列】2、别做机器人——让工作自动化
  20. TCP的三次握手与四次挥手详解

热门文章

  1. vs code调试console程序报错--preLaunchTask“build”
  2. Not a git repository (or any of the parent directories): .git
  3. ajax hash缓存
  4. shell的EOF用法
  5. Android-将RGB彩色图转换为灰度图
  6. CentOS hgfs中没有共享文件夹
  7. 第十三章 Spring消息(待续)
  8. Python-flask中数据库连接池DBUtils
  9. 5. CopyOnWriteArrayList 的适用场景
  10. rabbitmq 用户管理