繁体   English   中英

Android 视图和视图组

[英]Android View and ViewGroup

在 Android 中ViewGroup继承自View ViewGroup是一个包含Views的容器。

ViewGroup (LinearLayout)
View (TextView)

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

我认为你对措辞太执着了。

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

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

恕我直言 ...

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

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

即使命名可能不是最好的......

ViewGroupView的(子类),因为它可以在重要方面充当视图:

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

所以它真的是一个View

我同意类名ViewGroup有点混乱,因为它听起来像是一个组,而不是一个视图。 如果笨拙,将其称为ViewGroupView可能更合乎逻辑。

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

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

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

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


如果您仍然没有找到它是什么,请使用谷歌图片搜索:

在此处输入图片说明

ViewGroup 是一种特殊的视图,可以包含其他视图。 - 视图组是布局和视图容器的基类 - 例如,RelativeLayout 是包含 TextView(View) 和其他布局的 ViewGroup。

参考信息链接: https : //developer.android.com/reference/android/view/ViewGroup.html

视图代表用户界面组件的基本构建块——它在屏幕上占据矩形,负责绘制和处理事件。 - 示例有 EditText、Button、TextView 等

参考信息链接: https : //developer.android.com/reference/android/view/View.html

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

  1. View :- View 是一个对象,它在屏幕上绘制一些用户可以与之交互的东西。
  2. ViewGroup :- ViewGroup 用于保存视图和视图组。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM