布局定义了应用中的界面结构(例如 Activity 的界面结构)。布局中的所有元素均使用 View 和 ViewGroup 对象的层次结构进行构建。View 通常用于绘制用户可看到并与之交互的内容。ViewGroup 则是不可见的容器,用于定义 View 和其他 ViewGroup 对象的布局结构。
 
View 对象通常称为“微件”,可以是多个子类之一,例如 Button 或 TextView。
 ViewGroup 对象通常称为“布局”,可以是提供不同布局结构的众多类型之一,例如 LinearLayout 或 ConstraintLayout。
View类代表用户界面组件的基本构造块。View 在屏幕上占据一块矩形区域,负责绘图和事件处理。View 是widgets的基类,用于创建交互式 UI 组件(按钮、文本字段等)。子类是 layouts的 ViewGroup基类,layouts是容纳其他 View(或其他 ViewGroup)并定义其布局属性的不可见容器。
直接子类
 AnalogClock, ImageView, KeyboardView, MediaRouteButton, ProgressBar, Space, SurfaceView, TextView, TextureView, ViewGroup, ViewStub
| 直接子类 | 描述 | 
|---|---|
| AnalogClock | 此类在 API 级别 23 中已弃用。不再支持此小部件。 | 
| ImageView | 显示图像资源,例如Bitmap 或Drawable资源。 | 
| KeyboardView | 此类在 API 级别 29 中已弃用。已弃用此类是因为这只是一个方便的 UI 小部件类,应用程序开发人员可以在现有公共 API 之上重新实现该类。如果你已经依赖了这个类,可以考虑将 AOSP 的实现复制到你的项目中,或者自己重新实现一个类似的小部件 | 
| MediaRouteButton | |
| ProgressBar | 指示操作进度的用户界面元素。 | 
| Space | Space 是一个轻量级的 View 子类,可用于在通用布局中的组件之间创建间隙。 | 
| SurfaceView | 提供嵌入在视图层次结构中的专用绘图表面。 | 
| TextView | 向用户显示文本的用户界面元素。 | 
| TextureView | TextureView 可用于显示内容流,例如来自相机预览、视频或 OpenGL 场景的内容流。 | 
| ViewGroup | AViewGroup是一个可以包含其他视图(称为子视图)的特殊视图。视图组是布局和视图容器的基类。 | 
| ViewStub | ViewStub 是一个不可见的、零大小的视图,可用于在运行时懒惰地扩充布局资源。 | 
间接子类
 AbsListView, AbsSeekBar, AbsSpinner, AbsoluteLayout, ActionMenuView, AdapterView, AdapterViewAnimator, AdapterViewFlipper, AppWidgetHostView, AutoCompleteTextView, Button, CalendarView, CheckBox, CheckedTextView, Chronometer, and 55 others.
| 间接子类 | 描述 | 
|---|---|
| AbsListView | 可用于实现虚拟化项目列表的基类。 | 
| AbsSeekBar | AbsSeekBar 通过添加可拖动的滑块扩展了 ProgressBar 的功能。 | 
| AbsSpinner | 微调器小部件的抽象基类。 | 
| AbsoluteLayout | 此类在 API 级别 3 中已弃用。改用FrameLayout,RelativeLayout 或自定义布局。 | 
| ActionMenuView | ActionMenuView 是将一系列菜单选项呈现为一个View。 | 
| AdapterView<T extends Adapter> | AdapterView 是一个视图,其子项由Adapter. | 
| AdapterViewAnimator | AdapterView在其视图之间切换时将执行动画 的 a 的基类。 | 
| AdapterViewFlipper | 简单ViewAnimator的,将在已添加到其中的两个或多个视图之间进行动画处理。 | 
| AppWidgetHostView | 提供显示 AppWidget 视图的粘合剂。 | 
| AutoCompleteTextView | 一个可编辑的文本视图,在用户输入时自动显示完成建议。 | 
| Button | 用户可以点击或单击以执行操作的用户界面元素。 | 
| CalendarView | 此类是用于显示和选择日期的日历小部件。 | 
| CheckBox | 复选框是一种特定类型的双态按钮,可以选中或取消选中。 | 
| CheckedTextView | TextView支持Checkable 界面和显示 的扩展。 | 
| Chronometer | 实现简单计时器的类。 | 
| CompoundButton | 具有两种状态的按钮,已选中和未选中。 | 
| DatePicker | 提供用于选择日期的小部件。 | 
| DialerFilter | 此类在 API 级别 26 中已弃用。请改用自定义视图或布局来处理此功能 | 
| DigitalClock | 此类在 API 级别 17 中已弃用。建议您TextClock改为使用。 | 
| EditText | 用于输入和修改文本的用户界面元素。 | 
| ExpandableListView | 在垂直滚动的两级列表中显示项目的视图。 | 
| ExtractEditText | 专门EditText用于在全屏输入法中显示提取的文本并与之交互。 | 
| FragmentBreadCrumbs | 此类在 API 级别 21 中已弃用。不再支持此小部件。 | 
| FrameLayout | FrameLayout 旨在遮挡屏幕上的一个区域以显示单个项目。 | 
| GLSurfaceView | SurfaceView 的一种实现,它使用专用表面来显示 OpenGL 渲染。 | 
| Gallery | 此类在 API 级别 16 中已弃用。不再支持此小部件。其他水平滚动小部件包括HorizontalScrollView和ViewPager 来自支持库。 | 
| GestureOverlayView | 手势输入的透明覆盖层,可以放置在其他小部件之上或包含其他小部件。 | 
| GridLayout | 将其子项放置在矩形网格中的布局。 | 
| GridView | 在二维滚动网格中显示项目的视图。 | 
| HorizontalScrollView | 用户可以滚动的视图层次结构的布局容器,允许它比物理显示更大。 | 
| ImageButton | 显示一个带有图像(而不是文本)的按钮,用户可以按下或单击该按钮。 | 
| ImageSwitcher | ViewSwitcher当在其上设置新图像时在两个 ImageView 之间切换。 | 
| InlineContentView | 此类表示一个视图,其中包含来自另一个应用程序的不透明内容,您可以将这些内容嵌入到您的 UI 中。 | 
| LinearLayout | 将其他视图水平排列在单列中或垂直排列在单行中的布局。 | 
| ListView | 显示可垂直滚动的视图集合,其中每个视图都位于列表中前一个视图的正下方。 | 
| MediaController | 包含 MediaPlayer 控件的视图。 | 
| MultiAutoCompleteTextView | 一个可编辑的文本视图,扩展AutoCompleteTextView,它可以显示用户正在键入的文本子字符串的完成建议,而不是必须显示整个内容。 | 
| NumberPicker | 使用户能够从预定义范围中选择数字的小部件。 | 
| QuickContactBadge | 用于显示具有标准 QuickContact 徽章和单击行为的图像的小部件。 | 
| RadioButton | 单选按钮是两种状态的按钮,可以选中或取消选中。 | 
| RadioGroup | 此类用于为一组单选按钮创建多重排除范围。 | 
| RatingBar | RatingBar 是 SeekBar 和 ProgressBar 的扩展,以星号显示评级。 | 
| RelativeLayout | 一种布局,其中子级的位置可以相对于彼此或父级进行描述。 | 
| ScrollView | 允许滚动放置在其中的视图层次结构的视图组。 | 
| SearchView | 为用户提供用户界面以输入搜索查询并向搜索提供程序提交请求的小部件。 | 
| SeekBar | SeekBar 是 ProgressBar 的扩展,它添加了一个可拖动的滑块。 | 
| SlidingDrawer | 此类在 API 级别 17 中已弃用。不再支持此类。如果您必须在您的应用程序中使用它,建议您将自己的实现基于 Android 开源项目的源代码。 | 
| Spinner | 一次显示一个孩子并让用户在其中进行选择的视图。 | 
| SplashScreenView | 允许活动自定义其启动画面退出动画的视图。 | 
| StackView | |
| Switch | 开关是一种双态切换开关小部件,可以在两个选项之间进行选择。 | 
| TabHost | 此类在 API 级别 30 中已弃用。新应用程序应使用片段 API 而不是此类:改为使用TabLayout 和 ViewPager 。 | 
| TabWidget | 此类在 API 级别 30 中已弃用。新应用程序应使用片段 API 而不是此类:改为使用TabLayout 和 ViewPager 。 | 
| TableLayout | 将其子项排列成行和列的布局。 | 
| TableRow | 水平排列其子项的布局。 | 
| TextClock | TextClock可以将当前日期和/或时间显示为格式化字符串。 | 
| TextSwitcher | 专门ViewSwitcher包含类型的子项TextView。 | 
| TimePicker | 用于选择一天中时间的小部件,可以是 24 小时制或 AM/PM 模式。 | 
| ToggleButton | 将选中/未选中状态显示为带有“灯光”指示器的按钮,默认情况下伴随文本“ON”或“OFF”。 | 
| Toolbar | 在应用程序内容中使用的标准工具栏。 | 
| TvInteractiveAppView | 显示交互式电视应用程序的内容。 | 
| TvView | 显示电视内容。 | 
| TwoLineListItem | 此类在 API 级别 17 中已弃用。此类可以由使用RelativeLayout 或 的应用程序轻松实现LinearLayout。 | 
| VideoView | 显示视频文件。 | 
| ViewAnimator | FrameLayout在其视图之间切换时将执行动画 的容器的基类。 | 
| ViewFlipper | 简单ViewAnimator的,将在已添加到其中的两个或多个视图之间进行动画处理。 | 
| ViewSwitcher | ViewAnimator在两个视图之间切换,并有一个创建这些视图的工厂。 | 
| WebView | 显示网页的视图。 | 
| ZoomButton | 此类在 API 级别 26 中已弃用。使用其他方法来处理此功能。这个小部件只是一个长按处理程序的简单包装器。 | 
| ZoomControls | 此类在 API 级别 29 中已弃用。此功能和 UI 使用自定义视图和布局可以更好地处理,而不是使用专用的缩放控件小部件 | 












![[ACTF2020 新生赛]BackupFile](https://img-blog.csdnimg.cn/99feb41cbba443619381475a3fb64a6d.png)






