时间:2015-06-01 来源:

关于android控件的默认属性问题 【综合】

每个控件都有很多属性 而对于一些属性会有其默认值  而这些默认值是哪里来的?

我们会想到style或者theme 可往往我们使用TextView或者一些常用的控件的时候并没有声明 style属性 或者theme属性啊

我们知道 attrs是xml布局文件中控件指定的属性值 而defStyle 是style中指定属性值

当控件没有指定style时调用第二个构造方法

attrs   是解析xml文件中 控件的属性(id, com.android.internal.R.styleable.TextView, 0); ....... }</span> TextView 共有3个构造方法         android提供的控件 都会有3个构造方法 第一个构造方法 需要我们传入一个Context对象 一般用于在代码中创建对象

势必会调用构造方法来创建对象

指定了style时调用第三个

答案是 在activity的theme中指定了textViewStyle

对于TextView 我们一般不指定style 此时就会调用第二个构造方法

<span style="font-size:14px;">public TextView(Context context, int defStyle) {}</span> 分析一下参数: context   是上下文环境    由系统提供

而com.android.internal.R.styleable.TextView 是在scheme中即attrs.xml中定义的属性

可以看出这是一个id引用对象 在系统attr.xml文件中定义

com.android.internal.R.attr.textViewStyle

<span style="font-size:14px;"> <style name="Widget.TextView"> <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> <item name="android:textSelectHandleLeft">?android:attr/textSelectHandleLeft</item> <item name="android:textSelectHandleRight">?android:attr/textSelectHandleRight</item> <item name="android:textSelectHandle">?android:attr/textSelectHandle</item> </style></span> 以上就是Textview的默认属性了 总结:

所以把attrs 和defStyle的值匹配到com.android.internal.R.styleable.TextView的属性上

控件的默认值在style中指定

我们知道 开发中缩写的xml 布局文件 最后都会被解析成为一个对象     

<span style="font-size:14px;"> public TextView(Context context, attrs, com.android.internal.R.styleable.TextView, 0);</span> 这个obtainStyledAttributes可以理解为使用attrs 和defStyle 对com.android.internal.R.styleable.TextView中的属性进行解析

<span style="font-size:14px;"> <style name="Theme"> <item name="textViewStyle">@android:style/Widget.TextView</item></span> 定义在了Theme中 而Theme是所有theme的基类 所以无论activity 的theme是什么 都可以找到textViewStyle @android:style/Widget.TextView

<span style="font-size:14px;"> <!-- Default TextView style. --> <attr name="textViewStyle" format="reference" /></span> 由此可知当我们没有为控件指定style时 会使用一个默认style

那么这个默认style从哪来的啊 我们也并没有为这个textViewStyle设定值啊 ?

当不指定控件style  会使用默认的style

这个表示引用系统style资源Widget.TextView

点击次数:4163
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日javascriptArray对象slice()方法【Web前端】2015年01月19日iOS让tableView选中固定行 【综合】2015年08月24日javascript计算两个整数的百分比值2014年01月29日一个毫不艰难的决定 ,,2016年06月23日codeblocks多线程pthread_create函数未定义引用解决办法 【移动开发】2015年04月29日UVA11020(EfficientSolutions-multiset的lower_bound)【编程语言】2014年12月09日解决Eclipse项目有红感叹号的方法【综合】2015年01月29日asp.net窗体的打开和关闭(输出js)2014年01月29日英国创意包装设计2014年01月28日如何对非公开类进行单元测试2017年11月15日关于AssetBundle,Shader丢失的问题 【编程语言】2015年07月27日Word2007自定义设置页码样式2014年01月28日AndroidManifest内容解析 【移动开发】2015年06月01日SeaShepherd平面创意广告欣赏2014年01月28日Linux下LCD10分钟自动关屏的问题总结【移动开发】2015年06月24日【Java解析XML】【一】XML解析技术概括【编程语言】2015年08月14日函数 【数据库】2014年12月01日虚荣MVP 【编程语言】2014年12月03日开源运动的破坏性效应 【移动开发】2015年07月01日中国企业发展的十八大趋势【编程语言】2015年05月11日GTK进阶学习:设置窗口背景图(可指定其大小) 【系统运维】2015年07月31日jquery实现的图片旋转实例 【移动开发】2015年02月04日PPT动画教程:放映时临时标记2014年01月28日线程网格(grid) 【编程语言】2015年09月04日leetcode-189RotateArray【编程语言】2015年03月19日基于OAuth2.0协议的QQ第三方授权登录iOS代码分析【移动开发】2015年02月09日Annotation(一)——注解开发介绍 【编程语言】2014年11月10日xib---拖拽的方法搭建视图 【综合】2015年05月27日WPS2012法宝之如意金箍棒篇2014年01月28日来自腾讯的一个不固定高度得消息的滚动特效2014年01月29日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)