Android中的View
和小部件有什么区别?
答案 0 :(得分:21)
如View
类文档中所述:
此类表示用户界面组件的基本构建块。
View
占据屏幕上的矩形区域,负责绘图和事件处理。View
是窗口小部件的基类,用于创建交互式UI组件(按钮,文本字段等)。
ViewGroup
子类是布局的基类,它是包含其他View
s(或其他ViewGroup
s)并定义其布局属性的不可见容器。
因此,View
是UI元素的基类,Widget
松散定义为 任何可以使用 {{1} }。
让我们更多地强调这些概念。
View
View
是所有UI元素的基类。因此,它涵盖了许多不同的类和概念,包括小部件,View
和布局。有一个根ViewGroup
附加到Window实例,它构成了View
层次结构的基础。通常,单词View
通常用于描述UI元素,或者用于引用抽象或基本UI类,例如View
。
这个术语有各种各样的定义,但大多数都是指"随时可以使用" UI元素,可以是ViewGroup
,Button
,ImageView
等。请注意,有些人认为小部件是完整的UI元素(非抽象)而不是容器(例如EditText
s(布局/ ViewGroup
))。同样值得注意的是" widget"是一个包名称(ListViews
),其中文档提到以下内容:
小部件包包含(通常是可视的)UI元素,可在“应用程序”屏幕上使用。
因此,将非可视UI元素也视为小部件以及在小部件包下定义的任何类是合理的。请参阅此处以获取小部件包中的完整类列表:http://developer.android.com/reference/android/widget/package-summary.html
不要与UI元素小部件混淆,App小部件是一个远程android.widget
层次结构,最常显示在用户的主屏幕上。由文档定义:
App Widgets是微型应用程序视图,可以嵌入到其他应用程序(例如主屏幕)中并接收定期更新。这些视图在用户界面中称为窗口小部件,您可以使用应用程序窗口小部件提供程序发布一个窗口小部件。能够容纳其他App Widgets的应用程序组件称为App Widget主机。
View
ViewGroup
是ViewGroup
的子类,可以为子View
提供父级和位置,例如在布局的情况下。
与Widgets一样,没有Layout基类,因此它可以松散地定义为扩展View
的任何类,并提供定义子ViewGroup
的定位的能力。通常,只有View
个子类附加了单词" Layout" (在ViewGroup
中,LinearLayout
)被称为"布局",其他扩展RelativeLayout
的类通常被称为"查看容器" ;
最后,我建议您每当提及“观看”,“窗口小部件”或任何其他重要术语时,都要明确说明您的预期定义,以便人们可以更好地了解您所指的内容。
答案 1 :(得分:13)
Widget是一个视图。布局是ViewGroup。要创建窗口小部件,请扩展视图。
答案 2 :(得分:7)
Widget是Android中的包,包含所有用户界面,如按钮,textView和布局等。但是view是一个抽象类,包括属性,焦点和事件处理方法,渲染等
但是所有小部件都扩展了视图,以获取具有属性,焦点等行为的UI。因此,所有小部件都是视图的示例,但视图与小部件不同。 View-group充当包含不同视图的容器示例是frame-layout,relative-layout。它们扩展了视图组,其作用就像一个容器,它为它包含的所有视图添加了特定的行为。
答案 3 :(得分:4)
我不相信任何早期的答案都是正确的。不同的UI工具包对于通常基本相同的东西使用不同的术语,并且 是真的,因为Android View
非常类似于.NET Control
或Qt小部件
但“小部件”也意味着Android中非常具体的东西。如果长按主屏幕,则会出现一个“添加到主屏幕”对话框,其中包含添加小部件(以及其他内容)。如果触摸Widgets行,您将获得一个小部件菜单,如模拟时钟1到4。
根据developer.android.com/guide/topics/appwidgets,这些是特殊实体,可让您的流程在另一个流程的视图中显示内容。像主屏幕。您可以免费继承一种特殊的广播协议,但您也可以通过与developer.android.com/reference/android/widget/RemoteViews.html主机中的视图进行交互,这些协议似乎涉及编组。我刚刚开始考虑写一个(这就是我发现这个问题的方式),但文档确实说你只能使用FrameLayout
,LinearLayout
和RelativeLayout
布局,它们只能包含AnalogClock
,Button
,Chronometer
,ImageButton
,ImageView
,ProgressBar',
TextView , and
ViewFlipper`“小部件类“ - ”不支持这些类的后代。“
这只是有点限制!
答案 4 :(得分:3)
让我们看到明显的差异,没有巨大的描述..
现在你可以这样认为,view是一个容器或占位符,widget是可以放在任何视图中的独立控件。
但请记住,这些更像是设计概念,而不是核心定义。
最后,可以得出结论,
有关详细说明,请查看以下基本代码:
<!doctype html>
<head>
<title>New jQuery UI Widget by souro</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<script>
$(function() {
$.widget("iP.myButton", {
_create: function() {
this._button = $("<button>");
this._button.text("My first Widget Button");
this._button.width(this.options.width)
this._button.css("background-color", this.options.color);
this._button.css("position", "absolute");
this._button.css("left", "100px");
$(this.element).append(this._button);
},
});
$("#button1").myButton();
});
</script>
</head>
<body>
<div id="button1"></div>
</body>
</html>
&#13;
现在您可以看到 myButton 是一个小规模的独立视图,即小部件,它将被放置在容器中 button1 ,即< strong> view ,是的,您可以将此小部件放在任何其他视图中,即小部件的用途。我猜是有道理的。
答案 5 :(得分:1)
只是来自“The Busy Coder's Guide to Android Development”的引文,第6章:
所有小部件,包括显示的小部件 在上面,扩展View,并因此给出 所有小部件都是一个有用的数组 超出这些的属性和方法 已经描述过了。
答案 6 :(得分:0)
视图与布局,占位符有关。
小部件关注数据,UI行为(前滑块)。视图包含小部件。
答案 7 :(得分:0)
我对此有着同样的困惑,尤其是两个包android.view
和android.widget
。我最终认为小部件是“随时可用”的视图,而视图只是构建小部件的元素。如果我创建一个将直接用于布局的自定义视图,我会认为是一个小部件。
答案 8 :(得分:0)
view是widget的超类,因此widget是一种视图。在“pro android 4”中,作者将它们视为同一件事。
“视图,小部件,控件”每个都代表一个UI元素。示例包括按钮,网格,列表,窗口,对话框等。术语视图,小部件和控件可互换使用在本章中。“