10

在 AndroidViewGroup中继承自View. AViewGroup是一个装有 的容器Views

ViewGroup (LinearLayout)
View (TextView)

为什么 Android 的人们将这种关系定义为Inheritance而不是组合。由于ViewGroup包含Views不应该是组合物吗?

4

7 回答 7

12

我觉得你太拘泥于措辞了。

“ViewGroup”有充分的理由从“View”继承“TextView”和“ImageView”或......更重要的是......“ScrollView”或“SurfaceView”(后者两个都“包含东西”)。

也许“视图”不一定是术语的最佳选择……但类层次结构完全有意义。不管它的子类被命名为:)

恕我直言 ...

于 2011-12-23T06:12:43.710 回答
3

我认为这是复合设计模式的一个很好的例子:

http://en.wikipedia.org/wiki/Composite_pattern

尽管命名可能不是最好的...

于 2013-05-20T13:03:08.107 回答
2

AViewGroup是一个(子类),View因为它可以以重要的方式作为视图:

  • 它可以是布局 XML 文件中的元素
  • 它可以显示在屏幕上(通过显示它的子视图、它自己的背景颜色等)
  • 它与视图层次结构的其余部分一起膨胀
  • 它可以作为活动的内容视图(通过setContentView()

所以它确实是一个View.

我同意类ViewGroup名有点令人困惑,因为它听起来像是一个组,而不是一个视图。如果笨拙,调用它ViewGroupView可能更合乎逻辑。

为什么 Android 的人们将这种关系定义为继承而不是组合?由于 ViewGroup 包含 Views 不应该是组合吗?

在这种情况下,继承和组合并不是相互排斥的。ViewGroup 是一个 View(继承)一个 ViewGroup 可以包含 Views(组合)。

于 2015-08-06T19:59:32.113 回答
2

阅读官方文档是黄金法则。

ViewGroup 是可以包含其他视图(称为子视图)的特殊视图。视图组是布局和视图容器的基类。该类还定义了 ViewGroup.LayoutParams 类,该类用作布局参数的基类。


如果还是不知道是什么,用谷歌图片搜索:

在此处输入图像描述

于 2015-08-28T10:52:46.580 回答
0

Viewgroup 继承视图的属性,并与其他视图和视图组一起做更多事情

于 2011-12-23T06:53:08.700 回答
0

Android 应用程序中的所有 UI 元素都是使用ViewViewGroup对象构建的。

  1. View :- View 是一个在屏幕上绘制用户可以与之交互的东西的对象。
  2. ViewGroup :- ViewGroup 用于保存视图和视图组。
于 2021-01-05T04:20:16.110 回答
0

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

于 2018-03-05T10:27:14.713 回答