Android中的View和widget之间有什么区别?

dat*_*nly 33 android

ViewAndroid中的a 和widget 之间有什么区别?

The*_*eIT 23

正如View课程文档中所述:

此类表示用户界面组件的基本构建块.A View占据屏幕上的矩形区域,负责绘图和事件处理.View是窗口小部件的基类,用于创建交互式UI组件(按钮,文本字段等).

ViewGroup子类是用于布局的基类,它们是保持其他不可见容器View秒(或其它ViewGroup多个)和定义它们的布局属性.

因此,一个View是一个基类为UI元素和一个Widget宽松地定义为 任何准备使用 View.


让我们再强调一下这些概念.

View

A View是所有UI元素的基类.因此,它涵盖了许多不同的类和概念,包括小部件,ViewGroups和布局.有一个根View附加到Window实例,它构成了View层次结构的基础.通常,该单词View通常用于描述UI元素,或者用于引用抽象或基本UI类,例如ViewGroups.

窗口小部件

有关于这一术语的各种定义,但大多数指的是"准备使用" UI元素,无论是Button,ImageView,EditText等需要注意的是有些人认为小部件是完成(不是抽象的),因此不容器UI元素(例如ViewGroups(layouts/ListViews)).值得注意的是,"widget"是一个包名(android.widget),其中文档提到以下内容:

小部件包包含(通常是可视的)UI元素,以便在"应用程序"屏幕上使用.

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


App Widget

不要与UI元素小部件混淆,App小部件是一种远程View层次结构,最常显示在用户的主屏幕上.根据文档的定义:

App Widgets是微型应用程序视图,可以嵌入到其他应用程序(例如主屏幕)中并接收定期更新.这些视图在用户界面中称为窗口小部件,您可以使用应用程序窗口小部件提供程序发布一个窗口小部件.能够容纳其他App Widgets的应用程序组件称为App Widget主机.

ViewGroup

A ViewGroup是子类的子类,View并提供父级和子级View的定位能力,例如在布局的情况下.

布局/视图容器

与Widgets一样,没有Layout基类,因此它可以松散地定义为任何扩展的类,ViewGroup并提供定义子Views在其中的定位的能力.通常,只有ViewGroup附加单词"Layout"(如LinearLayout,RelativeLayout)的子类被称为"布局",其他扩展类ViewGroup通常被称为"视图容器".

最后,我建议您每当提及视图,小部件或任何其他重要术语时,都要明确您的预期定义,以便人们可以更好地理解您所指的内容.


进一步阅读


JAL*_*JAL 13

小部件是一个视图.布局是ViewGroup.要创建窗口小部件,请扩展视图.

  • 令人困惑的是,ListView在[API docs](http://developer.android.com/reference/android/widget/ListView.html)中被称为View,但在[API指南]中被称为ViewGroup( http://developer.android.com/guide/topics/ui/layout/listview.html).因此,ViewGroup也可能是View,而View是最通用的术语. (3认同)

Nit*_*nic 7

Widget是Android中的包,包含所有用户界面,如按钮,textView和布局等.但是view是一个抽象类,包括属性,焦点和事件处理方法,渲染等

但是所有小部件都扩展了视图,以获取具有属性,焦点等行为的UI.因此,所有小部件都是视图的示例,但视图与小部件不同.View-group充当包含不同视图的容器示例是frame-layout,relative-layout.它们扩展了视图组,其作用就像一个容器,它为它包含的所有视图添加了特定的行为.


Jon*_*itz 5

我不相信之前的任何答案都是真正正确的。不同的 UI 工具包对本质上相同的事物使用不同的术语,而且Android 确实View.NETControl或 Qt 小部件非常相似。

但“小部件”在 Android 中也意味着一些非常具体的东西。如果长按主屏幕,您会看到一个“添加到主屏幕”对话框,其中提供添加小部件(除其他外)。如果您触摸“小部件”行,您会看到一个小部件菜单,例如模拟时钟 1 到 4。

根据developer.android.com/guide/topics/appwidgets,这些是特殊的实体,可以让您的进程在另一个进程的视图中显示内容。就像主屏幕一样。您可以免费继承一个特殊的广播协议,但您还可以通过似乎涉及封送处理的特殊协议与developer.android.com/reference/android/widget/RemoteViews.html主机中的视图进行交互。我刚刚开始考虑写一个(这就是我发现这个问题的方式),但文档确实说你只能使用, , 和布局,并且它们只能包含, , , , , TextView ViewFlipper`“小部件类” - “不支持这些类的后代。”FrameLayoutLinearLayoutRelativeLayoutAnalogClockButtonChronometerImageButtonImageViewProgressBar',, and

这只是有点限制!


Vin*_*d R 1

视图与布局、占位符有关。

小部件与数据、UI 行为(例如滑块)有关。视图包含小部件。