视图和小部件有什么区别?

8
如果我没有错的话,View 是所有小部件的超类,但我如何区分 View 和小部件?例如,一个按钮或文本框,我应该称它们为 View 还是小部件?

1
可能是difference between view and widget的重复问题。 - TheIT
5个回答

8

两个术语都可以使用。

我倾向于将"widget"这个术语用于View子类,它们默认情况下对用户有可视化表示——例如 TextViewButtonListView等。

而将"view"这个术语用于任何View的子类,包括像LinearLayout这样的纯容器。

但是,再次强调,用任何一个术语都不会有特别的危害。


5

视图是UI组件的基本构建块。将视图视为屏幕上的矩形,可以绘制自身并处理事件。(1)

因此,视图没有隐含的“语义”关联。您可以实现任何出现在屏幕上并与用户交互的东西。

现在,小部件通常被认为是用户与应用程序交互的“控件”。按钮、旋转器和复选框都是“小部件”的很好的例子。然而,这不是一个“硬性”定义,在Android上没有像小部件类这样的东西。事实上,某些东西是“小部件”仅意味着该类位于android.widgets包中以进行组织,但它实际上是一个视图。

例如,按钮的基类是View,而不是像android.widgets.Widget(不存在)这样的东西。

(1) http://developer.android.com/reference/android/view/View.html

另请参阅: http://developer.android.com/reference/android/view/package-summary.html
http://developer.android.com/reference/android/widget/package-summary.html


4
正如View类文档中所优雅地陈述的那样:
这个类代表了用户界面组件的基本构建块。视图在屏幕上占据一个矩形区域,并负责绘制和事件处理。View是小部件的基类,用于创建交互式UI组件(按钮、文本字段等)。ViewGroup子类是布局的基类,它们是不可见的容器,包含其他视图(或其他ViewGroups)并定义它们的布局属性。
因此,View是IU元素的基类,Widget被松散地定义为任何可以直接使用的View。尤其是:
View: View是所有UI元素的基类。因此,它涵盖了许多不同的类和概念,包括Widgets、ViewGroups和Layouts。有一个根View附加到Window实例上,它形成了View层次结构的基础。一般来说,单词View通常用于描述通用的UI元素,或者是指抽象或基础的UI类,例如ViewGroups。

小部件: 这个术语有很多不同的定义,但大多数都指“即插即用”的UI元素,比如Button、ImageView、EditText等。请注意,有些人认为小部件是完整的UI元素(而不是抽象的),并且不是容器(例如ViewGroups(布局/ListViews))。值得注意的是,Widget是一个包名称(android.widget),文档中提到:

小部件包含(主要是视觉上的)UI元素,可在您的应用程序屏幕上使用。

因此,合理地考虑非视觉UI元素也是小部件,以及任何在widget包下定义的类。请参阅此处获取widget包中所有类的完整列表:http://developer.android.com/reference/android/widget/package-summary.html

应用程序小部件: 不要与UI元素小部件混淆,应用程序小部件是远程视图层次结构,最常显示在用户的主屏幕上。根据文档的定义:

小部件是可以嵌入其他应用程序(如主屏幕)并接收定期更新的小型应用程序视图。这些视图在用户界面中被称为小部件,您可以使用小部件提供程序发布一个小部件。能够容纳其他小部件的应用程序组件称为小部件宿主。
ViewGroup: ViewGroup是View的子类,并提供将子视图作为父视图进行布局和定位的能力,例如布局。
布局/视图容器: 与小部件类似,没有布局基类,因此可以松散地定义为任何扩展ViewGroup并提供在其中定义子视图位置的能力的类。通常,仅将以Layout结尾的ViewGroup子类(例如LinearLayout、RelativeLayout)称为布局,其他扩展ViewGroup的类通常只称为视图容器。
最后,我建议每当提到视图、小部件或任何其他重要术语时,明确你的意图定义,以便人们更好地理解你所指的内容。

进一步阅读: 视图和小部件之间的区别是什么 视图和小部件之间的区别


0

将视图视为类似于一个巨大的容器,其中包含占据屏幕上矩形区域并处理绘制和事件处理的任何内容。

而小部件是一组预构建的视图,可用于构建用户界面,例如按钮、复选框、编辑文本等。小部件是视图的子集。


-1

小部件是视图,它们驻留在应用程序之外(向用户显示),以执行特定功能(启动主应用程序本身或提供应用程序本身的功能),而无需启动应用程序。
例如,时钟小部件可以在不启动闹钟或时间应用程序的情况下显示时间。

更精确的定义可在此处找到:
小部件的定义


1
这些实际上不是“小部件”,它们被称为“应用程序小部件”(我不知道开发人员为什么决定在两个不同的东西上使用如此相似的措辞)。请参考您提供的链接。 - user287351

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