在 Android 所有的控件和 Layout 都有着一个父类 View 。Anroid 通过继承的方式,对父类控件进行继承,由此来在父类基础上创造新的控件。
View
我们先看看 View 这个父类
可以看到间接继承的有100多个子类,不得不说 View 这个爹很成功(Object 斜眼)。
ViewGroup
我们先拿其中的 ViewGroup 来说吧
可以看到大部分的 Layout 都继承自 ViewGroup 。一个 ViewGroup 可以包含别的 View 或 ViewGroup 。所以一个视图的根布局,通常是一个 ViewGroup 。
对于其中的 LinearLayout , RelativeLayout , GridLayout 等 Layout 大家应该都比较熟悉了。
但是看看里面还有一些控件,这些控件同样有着包含别的 View 或 ViewGroup 的功能。比如 RecyclerView , AdapterView 。
可能你会问,这个 AdapterView 是什么玩意。其实这个是我们常用的 GridView, ListView 的父类,换句话说,GridView, ListView 也属于 ViewGroup ,他们都能包含其他的 View 或 ViewGroup。相信你在使用 ListView 的时候一定在里面添加了一些控件的吧。
TextView
不得不说 TextView 也是一个强大的父类,很多的控件都继承自它。
其中常见的有 Button,EditText,CheckBox,RadioButton 等,我们发现啊。。貌似只要带有文字的控件基本都来继承自 TextView。这是他作为父类的特点。
ImageView
ImageView 带有显示图片的特性,然而很少有控件需要这个特性,所以相对来说子类就比较少了。
其中比较用的多的就是 ImageButton 了,现在 Android 还提供了原生的 FloatingActionButton 也是极好的。
总结
以上提出来说的三个子类是在整个 View 体系中比较重要的,其中以 ViewGroup 最为繁杂,派生类最多,而且其中有控件,有布局。TextView 则以子类控件继承为主。ImageView 的话相对需求较少。
我们给出一个简略图,可以直观的看到整个体系中常用类的继承结构。
ps1:上图包括直接子类和派生之类
ps2:如果想查看完整的继承结构,请查看官方文档