安卓视图和视图组

10

在 Android 中,ViewGroup 继承自 View。一个 ViewGroup 是一个容器,用来存放 Views

ViewGroup (LinearLayout)
View (TextView)

为什么Android的开发者把这种关系称为继承而不是组合?既然ViewGroup包含了Views,它不应该被视为组合吗?


1
可能是Android中View和ViewGroup的区别的重复问题。 - Suragch
7个回答

12

我认为你对措辞太过纠结。

"ViewGroup"同样有理由继承自"View",就像"TextView"、"ImageView"或者更重要的是"ScrollView"和"SurfaceView"一样(后两者都是"包含内容的视图")。

也许"View"并不是最合适的术语选择...但类层次结构完全是有道理的。无论其子类如何命名 :)

在我看来...


3

2
一个 ViewGroupView 的子类,因为它可以在重要的方面作为视图:

  • 它可以是布局 XML 文件中的元素
  • 它可以显示在屏幕上(通过显示其子视图、其自身的背景颜色等)
  • 它会随着其余视图层次结构一起被填充
  • 它可以作为活动的内容视图(通过 setContentView()

所以它确实是一个 View

我同意 ViewGroup 这个类名有点令人困惑,因为它听起来像是一个组,而不是一个视图。如果称它为 ViewGroupView 或许更合乎逻辑,但也不太好看。

为什么 Android 的开发者将这种关系定义为继承而不是组合?既然 ViewGroup 包含了 Views,它不应该是组合吗?

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


2

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

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


如果您仍然不知道它是什么,请使用Google图像搜索:

enter image description here


0

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

  1. View:- View是一个可以在屏幕上绘制某些内容,并且用户可以与之交互的对象。
  2. ViewGroup:- ViewGroup用于容纳Views和ViewGroups。

0

ViewGroup继承了视图的属性,并与其他视图和ViewGroup一起完成更多操作


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接