Android 视图和视图组
Posted
技术标签:
【中文标题】Android 视图和视图组【英文标题】:Android View and ViewGroup 【发布时间】:2012-01-26 14:52:35 【问题描述】:在 android 中,ViewGroup
继承自 View
。 ViewGroup
是一个包含 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】:ViewGroup
是View
的(子类),因为它可以在重要方面用作视图:
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 视图和视图组的主要内容,如果未能解决你的问题,请参考以下文章