Components 概览

Components 概览

Compose 中的组件被声明为 @Composable ,中文意思是可组成的/可合成,也为了与原来 xml 和 View(ViewGroup)做出区分。在使用过程中会体会到,使用 Compose 声明 UI 更像是在拼图。

Compose 提供了 Material Design 的实现,后者是一个用于创建数字界面的综合设计系统。我们可以使用可组合函数来实现 Material 组件。

下表中整理出目前 Compose 组件篇里的组件类别,在过程中根据 Compose 库的更新情况跟随着更新。

组件名组件类介绍
ScaffoldScaffoldScaffold 是 Compose UI 库中的一个重要组件,它提供了构建应用程序界面的基础结构和常见元素。
ButtonsButton
ElevatedButton
FilledTonalButton
OutlinedButton
TextButton
Button 是用户交互的关键元素,Button 允许自定义背景、文本颜色、点击事件等。此外,通过简单的 Kotlin 代码,你可以为按钮添加丰富的视觉效果和交互反馈。
Icon buttonIconButton
IconToggleButton
FilledIconButton
FilledIconToggleButton
FilledTonalIconButton
FilledTonalIconToggleButton
OutlinedIconButton
OutlinedIconToggleButton
IconButton 的作用是表示一个可点击的图标按钮,它通常用于触发特定的用户交互操作,如复制、粘贴、保存等。IconButton 具有一个最小触摸目标尺寸,以满足无障碍访问准则,并且可以在按钮内部居中显示图标。
Segmented buttonSegmentedButton
SingleChoiceSegmentedButtonRow
MultiChoiceSegmentedButtonRow
Segmented Button(分段按钮)通常用作工具栏或导航栏的一部分,允许用户在几个选项之间进行单选切换。通过设置 allowMultiple 属性为 true,Segmented Button 也可以实现多选功能。这种按钮的设计旨在提供清晰、直观的界面元素,帮助用户轻松地切换或选择不同的功能或选项。
CardsCard
ElevatedCard
OutlinedCard
提供了一个具有阴影和边距的容器,适用于展示内容块。Card 内部可以包含文本、图片或其他组件,并通过简单的属性设置来调整其外观。
ImageImageImage 用于加载和显示图片。除了基本的图片加载功能,Image 还支持裁剪、缩放、颜色调整等高级特性。
SliderSlider
RangeSlider
Slider 用于实现滑动输入。组件提供了丰富的定制选项,以满足不同的设计需求。
ListsListItemListItem 的作用是在列表或滚动视图中表示单个项目或条目。它提供了一个标准的布局结构,包括左侧的图标、中间的内容以及右侧的操作项(如开关或图标按钮),以便快速构建一致且用户友好的列表项界面。通过自定义内容和布局,ListItem 可以适应各种不同类型的数据展示需求。
Progress indicatorsLinearProgressIndicator
CircularProgressIndicator
Progress Indicator 进度展示功能。组件提供了丰富的定制选项,以满足不同的设计需求。
Top app barTopAppBar
CenterAlignedTopAppBar
MediumTopAppBar
LargeTopAppBar
AppBar(应用栏)用于展示应用的标题、导航图标及动作元素,以辅助用户导航。
Bottom app barBottomAppBarAppBar(应用栏)用于展示应用的标题、导航图标及动作元素,以辅助用户导航。
Radio buttonRadioButtonRadioButton 用于让用户从多个选项中选择一个,通常用于单选场景。
Floating Action ButtonExtendedFloatingActionButton
FloatingActionButton
SmallFloatingActionButton
LargeFloatingActionButton
Floating Action Button(浮动操作按钮)是一个在界面中悬浮于内容之上的按钮,通常用于触发应用的主要或最常用的操作。
ChipsAssistChip
ElevatedAssistChip
FilterChip
ElevatedFilterChip
InputChip
SuggestionChip
ElevatedSuggestionChip
Chip 是一种小型、可点击的用户界面元素,通常用于表示标签、属性或分类,以便用户快速识别和选择相关信息。
BadgeBadge
BadgedBox
Badge(徽标)是一种小部件,通常用于显示数字或文本,以标示与其关联的项目的新信息或状态。
TooltipPlainTooltip
RichTooltip
Tooltip(提示框)是一种在用户界面元素附近显示简短文本信息的组件,用于解释或补充界面元素的功能和用途。
CheckboxCheckbox
TriStateCheckbox
Checkbox(复选框)允许用户通过单击来选中或取消选中某个选项,以表示他们的选择或偏好。
DividersHorizontalDivider
VerticalDivider
Divider(分隔线)是一种用于在界面元素之间创建视觉分隔的组件,帮助组织和划分内容区域。
MenusDropdownMenu
DropdownMenuItem
ExposedDropdownMenuBox
Menu(菜单)是一种可弹出或展开的组件,用于显示一系列操作选项供用户选择,通常在用户点击或长按某个元素时触发。
Text fieldsTextField
OutlinedTextField
TextField(文本输入框)是一种用于接收和编辑用户输入的文本组件,支持单行和多行文本输入,并允许设置多种属性和样式以满足不同的输入需求。
DialogBasicAlertDialogDialog(对话框)是一种用于向用户展示额外信息或进行交互操作的弹出窗口,可以包含标题、内容、按钮等元素,通常用于提示、确认、输入等操作。
SwitchSwitchSwitch(开关)允许用户在两种状态之间切换,通常用于开启或关闭某个功能或设置。
Navigation BarNavigationBar
NavigationBarItem
Navigation Bar(导航栏)是一种用于在应用或页面间进行导航的用户界面组件,通常展示在不同的屏幕底部,提供直观的导航选项供用户点击跳转。
Navigation RailNavigationRail
NavigationRailItem
Navigation Rail(导航栏)是一个侧边导航组件,允许用户在应用程序的主要目的地之间移动。它通常用于显示三到七个应用程序目标,并且可以选择在标题内显示 FloatingActionButton 或徽标。每个目的地通常由一个图标和一个可选的文本标签表示。
Navigation DrawerModalNavigationDrawer
ModalDrawerSheet
PermanentNavigationDrawer
PermanentDrawerSheet
DismissibleNavigationDrawer
DismissibleDrawerSheet
NavigationDrawerItem
Navigation Drawer(导航抽屉)是一个从屏幕左边缘滑出的面板,用于显示应用的主要导航选项,提供用户在不同页面或功能间快速切换的便利。
TabsTab
LeadingIconTab
PrimaryTabRow
SecondaryTabRow
TabRow
ScrollableTabRow
PrimaryIndicator
SecondaryIndicator
Tabs(选项卡)用于将内容划分为多个部分,并通过点击不同的标签来切换显示不同的内容区域,帮助用户组织和浏览大量信息。
SnackbarsSnackbarSnackbar 是一种轻量级的用户反馈机制,当操作成功、失败或有其他重要信息需要用户注意时,会在屏幕底部短暂地显示一条消息,并带有动画效果。它不会打断用户的当前操作,并且在一段时间后自动消失。
Bottom sheetBottomSheetScaffold
ModalBottomSheet
Bottom Sheet(底部表单)是一种从屏幕底部滑出的面板,通常用于展示附加内容或提供额外的操作选项,同时不会遮挡屏幕上的主要内容。
SearchSearchBar它通常用于提供一个集成的搜索界面,让用户能够输入搜索查询并执行搜索操作。SearchBar 可能会包含文本输入框、清除按钮、语音输入按钮等功能,以简化搜索体验。这个组件的作用是提供一个用户友好的、一致性的搜索界面,并简化在 Compose 应用中实现搜索功能的过程。
Date PickerDatePicker
DatePickerDialog
DateRangePicker
DatePicker 是一个允许用户选择日期的控件。它允许用户通过日历文本字段键入日期或使用下拉控件来选择日期,通常用于在用户界面上获取或设置日期信息。
Time pickersTimePicker
TimeInput
TimePicker 是一个允许用户选择时间的控件。它提供了用户友好的界面,让用户可以通过滚动或点击来选择小时、分钟和(可选的)秒,从而设定特定的时间。TimePicker 通常用于需要用户输入或确认时间的场景,如设置闹钟、日程安排等。
Swipe to DismissSwipeToDismiss

上面表格中包含了大的组件类别,其中还有具体的组件类并未列举,下图是 Compose UI 库内组件类别及相关类的结构图。

Compose所有基本组件

后续的文章将结合上述表格和结构图中的组件类进行介绍,并给出示例及运行结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/419663.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年sCrypt编程马拉松即将开幕

BSV区块链的建设者们,你们在哪?2024年sCrypt编程马拉松即将拉开帷幕! 2024年3月16日至17日,我们将在旧金山市举办一场以比特币智能合约(即 sCrypt)和比特币通证(如Ordinals)相结合为…

jstat命令查看jvm的GC信息

文章目录 前言jstat命令查看jvm的GC信息1. 概述2. 应用堆内存水位阀值大小怎么确定3. 使用 jps 命令查看 Java 进程的进程号(PID)![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5097401443314e9d808a83b694dbc6e5.png)4. jstat用法5. 类加载…

农产品质量追溯系统—简介

概要 农产品质量安全事关广大人民群众的食用安全和身体健康。解决农产品质量安全问题,需要从源头开始抓好、抓实农产品安全监管工作。通过建立从产地到市场的全程质量控制系统和追溯制度,对农产品产地环境、生产过程、产品检测、包装盒标识等关键环节进行监督管理,提高广大…

php 把数字转化为大写中文

1. 120002129.25 转化后壹億贰仟萬贰仟壹佰贰拾玖圆贰角伍分2. 12000.2145 转化后壹萬贰仟圆贰角壹分肆厘伍毫3. 1020001211 转化后壹拾億贰仟萬壹仟贰佰壹拾壹圆整大致思路这样的: 从小数点分割成两部分,整数部分和小数部分分别处理。 整数四个一组进行处理,用substr函数分…

SpringBoot 事务失效及其对应解决办法

简介 本文主要讲述Spring事务会去什么情况下失效及其解决办法 Spring 通过AOP 进行事务控制,如果操作数据库报异常,则会进行回滚;如果没有报异常则会提交事务;但是,如果Spring 事务失效,会导致数据缺失/重…

几个原创文章自动生成软件推荐

在数字化时代,原创文章的重要性越来越被重视,但是频繁的写作工作却也耗费大量时间和精力。原创文章自动生成软件能够帮助大家快速生成各种类型的原创文章,节省时间和精力。本文将介绍6款不同的原创文章自动生成软件,并介绍一款知名…

mysql 常用命令练习

管理表格从表中查询数据从多个表查询修改数据sql变量类型 管理表格 创建一个包含三列的新表 CREATE TABLE products (id INT,name VARCHAR(255) NOT NULL,price INT DEFAULT 0,PRIMARY KEY(id) // 自增 ); 从数据库中删除表 DROP TABLE product; 向表中添加新列 ALTER TAB…

WPF中如何设置自定义控件

1.圆角按钮的设置: 众所周知在WPF中自带有提示信息,当我问创建Button时,点击空格出现如下可选设置 带有小扳手🔧图标为相应的属性,如果Button有CornerRadius(角半径)属性就能够直接设置Button实…

记录 android studio 通过安装NDK 编译C文件,得到需要的so文件

只怪自己太健忘,每次网上查了一圈,搞定后,再遇到又发现不会操作了,特此记下 不废话直接上步骤 (1) 进入AS的settinging如下界面 (2)选中图片箭头两个文件 进行下载 (…

Jmeter分布式部署

前期准备: 1. 控制机一台,代理机一台,Jmeter安装包 操作步骤: 1. Linux安装Jmeter(windows安装教程自己搜一下) 1.1创建一个单独的文件夹(jmeter),用来存放Jmeter的安装包 mkdir jmeter 1.2…

docker安装使用基础

一、镜像安装 我的docker安装在centos7虚拟机上(关于虚拟机网络设置此前已有总结VMware 搭建centos虚拟机网络设置_vmware centos 网络配置-CSDN博客),现在默认操作系统和网络已就位。 1、安装工具包 # 安装操作一般都需要管理员权限&…

【leetcode】 剑指 Offer学习计划(java版本含注释)(下)

目录 前言第十六天(排序)剑指 Offer 45. 把数组排成最小的数(中等)剑指 Offer 61. 扑克牌中的顺子(简单) 第十七天(排序)剑指 Offer 40. 最小的k个数(简单) 第…

STL常见容器(set/multiset)---C++

STL常见容器目录: 7. set/multiset 容器7.1 set/multiset 基本概念7.2 set构造和赋值7.3 set大小和交换7.4 set插入和删除7.5 set查找和统计7.6 set和multiset区别7.6.1 pair对组创建7.6.2 set和multiset区别 7.7 set容器排序7.7.1 内置数据类型7.7.2 自定义数据类型…

记录 关于navicat连接数据库报错1045的问题

重装数据库之后就连接不上了 报错1045 而网上的解决方案大都是更改数据库密码,但是我在第一步就被卡住无法更改密码,输入指令也报错,检查的环境变量也没错,经过长时间的试错终于找到解决了办法 解决办法 删除data文件夹 如果无法…

吸引用户购买产品的文案技巧,媒介盒子揭秘

在营销过程中,想要吸引用户购买产品,文案是重中之重,需要一定的技巧才能将文案写好,今天媒介盒子就来和大家聊聊:在品牌推广中如何通过一些小技巧吸引用户购买产品: 一、 少说专业术语 少说行话、黑话。多…

如何选择合适的幻兽帕鲁服务器CPU核心数和内存大小,避免丢包和延迟高?

根据幻兽帕鲁服务器的实际案例分析选择合适的CPU核心数和内存大小以避免丢包和延迟高,首先需要考虑的是服务器的性能需求。幻兽帕鲁服务器推荐使用4核CPU和16GB内存,建议使用32GB以上的内存才能稳定运行。这表明对于幻兽帕鲁这样的游戏服务器来说&#x…

2024有哪些免费的mac苹果电脑深度清理工具?CleanMyMac X

苹果电脑用户们,你们是否经常感到你们的Mac变得不再像刚拆封时那样迅速、流畅?可能是时候对你的苹果电脑进行一次深度清理了。在这个时刻,拥有一些高效的深度清理工具就显得尤为重要。今天,我将介绍几款优秀的苹果电脑深度清理工具…

(done) 如何计算 Hessian Matrix 海森矩阵 海塞矩阵

参考视频1:https://www.bilibili.com/video/BV1H64y1T7zQ/?spm_id_from333.337.search-card.all.click 参考视频2(正定矩阵):https://www.bilibili.com/video/BV1Ag411M76G/?spm_id_from333.337.search-card.all.click&vd_…

关于vue中关于eslint报错的问题

1 代码保存的时候会自动将单引号报错为双引号 导致eslint报错的问题, 解决思路: 在项目根目录下新建一个.prettierrc.json文件 { “tabWidth”: 2,“useTabs”: false,“singleQuote”: true,“semi”: false} 2 关于报错代码的时候 出现尾随逗号报错…

继承-学习2

this关键字:指向调用该方法的对象,一般我们是在当前类中使用this关键字,所以我们常说代表本类对象的引用 super关键字:代表父类存储空间的标识(可看作父类对象的引用) 父类: package ven;public class Fu {//父类成员…