博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于控件问题的分析

Posted on 2014-06-20 17:13  haobo  阅读(109)  评论(0编辑  收藏  举报

下面是我定位控件问题的分析步骤,希望能够对您有些帮助。

假设分析EditText的背景问题。

1、 查找EditText控件的源码EditText.java,找到其带两个参数的构造函数,一个参数为Context,另一个参数为AttributeSet。一般,控件会在该构造函数中指定默认的Style:

 

2、 默认的style一般都是由一个reference类型的attr 指定的,类似于C语言里的指针。比如此处EditText默认的Style就是由一个叫“editTextStyle”的attr指定的。而attr的定义一般是在theme中。可以在不同的theme中由同一个attr指向不同的style,这样就实现了,同一个控件,当所在的Activity使用不同的主题时,展现了不同的外观。

3、 根据上一步找到的attr,再去frameworks下theme.xml中去查找该attr的定义。

 

4、 然后再根据各个Theme里对editTextStyle属性的定义,分别去看各个主题下EditText默认控件style的定义,该定义是在frameworks/res/res/values/styles.xml中定义的。

 

 

从上面的定义可以看出我们自己风格的EditText默认风格,在各个主题下只是简单的继承自Widgt.Holo.EditText和Widget.Holo.Light.EditText。然后再去分析这两个父Style的定义就OK。