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

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

ViewGroup (LinearLayout)
View (TextView)

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

【问题讨论】:

标签: android view viewgroup


【解决方案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 对象。

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2013-07-18
                • 1970-01-01
                • 2012-01-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-06-01
                • 1970-01-01
                相关资源
                最近更新 更多