在 AndroidViewGroup
中继承自View
. AViewGroup
是一个装有 的容器Views
。
ViewGroup (LinearLayout)
View (TextView)
为什么 Android 的人们将这种关系定义为Inheritance
而不是组合。由于ViewGroup
包含Views
不应该是组合物吗?
我觉得你太拘泥于措辞了。
“ViewGroup”有充分的理由从“View”继承“TextView”和“ImageView”或......更重要的是......“ScrollView”或“SurfaceView”(后者两个都“包含东西”)。
也许“视图”不一定是术语的最佳选择……但类层次结构完全有意义。不管它的子类被命名为:)
恕我直言 ...
AViewGroup
是一个(子类),View
因为它可以以重要的方式作为视图:
setContentView()
)所以它确实是一个View
.
我同意类ViewGroup
名有点令人困惑,因为它听起来像是一个组,而不是一个视图。如果笨拙,调用它ViewGroupView
可能更合乎逻辑。
为什么 Android 的人们将这种关系定义为继承而不是组合?由于 ViewGroup 包含 Views 不应该是组合吗?
在这种情况下,继承和组合并不是相互排斥的。ViewGroup 是一个 View(继承),一个 ViewGroup 可以包含 Views(组合)。
阅读官方文档是黄金法则。
ViewGroup 是可以包含其他视图(称为子视图)的特殊视图。视图组是布局和视图容器的基类。该类还定义了 ViewGroup.LayoutParams 类,该类用作布局参数的基类。
如果还是不知道是什么,用谷歌图片搜索:
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