在 Android 中,ViewGroup
继承自 View
。一个 ViewGroup
是一个容器,用来存放 Views
。
ViewGroup (LinearLayout)
View (TextView)
为什么Android的开发者把这种关系称为继承而不是组合?既然ViewGroup
包含了Views
,它不应该被视为组合吗?
我认为你对措辞太过纠结。
"ViewGroup"同样有理由继承自"View",就像"TextView"、"ImageView"或者更重要的是"ScrollView"和"SurfaceView"一样(后两者都是"包含内容的视图")。
也许"View"并不是最合适的术语选择...但类层次结构完全是有道理的。无论其子类如何命名 :)
在我看来...
ViewGroup
是 View
的子类,因为它可以在重要的方面作为视图:
setContentView()
)所以它确实是一个 View
。
我同意 ViewGroup
这个类名有点令人困惑,因为它听起来像是一个组,而不是一个视图。如果称它为 ViewGroupView
或许更合乎逻辑,但也不太好看。
为什么 Android 的开发者将这种关系定义为继承而不是组合?既然 ViewGroup 包含了 Views,它不应该是组合吗?
在这种情况下,继承和组合并不是互斥的。一个 ViewGroup 是一个 View(继承)并且一个 ViewGroup 可以包含 Views(组合)。
阅读官方文档是黄金法则。
ViewGroup是一个特殊的视图,可以包含其他视图(称为子视图)。ViewGroup是布局和视图容器的基类。此类还定义了ViewGroup.LayoutParams类,该类作为布局参数的基类。
如果您仍然不知道它是什么,请使用Google图像搜索:
ViewGroup继承了视图的属性,并与其他视图和ViewGroup一起完成更多操作
ViewGroup是一种特殊的视图,可以包含其他视图。 - 视图组是布局和视图容器的基类 - 例如,RelativeLayout是包含TextView(View)和其他布局的ViewGroup。
有关详细信息,请参阅链接: https://developer.android.com/reference/android/view/ViewGroup.html
View表示用户界面组件的基本构建块 - 它占据屏幕上的矩形,并负责绘制和处理事件。 - 示例包括EditText、Button、TextView等
有关详细信息,请参阅链接: https://developer.android.com/reference/android/view/View.html