Android 视图和视图组

Posted

技术标签:

【中文标题】Android 视图和视图组【英文标题】:Android View and ViewGroup 【发布时间】:2012-01-26 14:52:35 【问题描述】:

android 中,ViewGroup 继承自 ViewViewGroup 是一个包含 Views 的容器。

ViewGroup (LinearLayout)
View (TextView)

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

【问题讨论】:

Difference between View and ViewGroup in Android的可能重复 【参考方案1】:

我认为你对措辞过于执着了。

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

也许“视图”不一定是术语的最佳选择......但类层次结构完全有意义。不管它的子类叫什么:)

恕我直言...

【讨论】:

【参考方案2】:

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

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

虽然命名可能不是最好的...

【讨论】:

【参考方案3】:

阅读the official doc是黄金法则。

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


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

【讨论】:

【参考方案4】:

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

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

所以它确实是View

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

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

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

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

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

【讨论】:

【参考方案7】:

一个中的所有 UI 元素 Android 应用是使用 View 构建的 和 ViewGroup 对象。

    View :- 视图是一个绘制对象 屏幕上的东西 用户可以与之交互。 ViewGroup :- ViewGroup 用于保存视图 和 ViewGroups。

【讨论】:

以上是关于Android 视图和视图组的主要内容,如果未能解决你的问题,请参考以下文章

Android:从视图中获取视图组?

如果可扩展列表视图android中的孩子为空,如何单击组

在可扩展列表视图android中折叠除选定组之外的所有组

Android:如何根据大小创建自定义布局

Android是怎样绘制视图的

Android学习-滚动视图ScrollView和HorizontalScrollView