当前位置: 首页 > news >正文

Compose | UI组件(五) | Button 按钮组件

文章目录

  • 前言
    • Button 是什么?
      • Button的创建
      • Button显示水平方向的UI
    • IconButton是什么?
      • IconButton是创建
    • FloatingActionButton是什么?
      • FloatingActionButton创建
    • ExtendedFloatingActionButton是什么?
  • 总结


前言

随着移动端的技术不断更新迭代,Compose也运用的越来越广泛,很多人都开始学习Compose

本文主要介绍Button的含义和基本用法


Button 是什么?

Button是按照Material Design风格来实现的,一个按钮组件

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Button(onClick: () -> Unit,                         //点击事件modifier: Modifier = Modifier,               //修饰符enabled: Boolean = true,                     //是否启用shape: Shape = ButtonDefaults.shape,         //定义按钮形状和填充颜色colors: ButtonColors = ButtonDefaults.buttonColors(),           //按钮颜色elevation: ButtonElevation? = ButtonDefaults.buttonElevation(), //按钮阴影border: BorderStroke? = null,                                   //按钮边框contentPadding: PaddingValues = ButtonDefaults.ContentPadding,  //按钮间距interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, //监听组件状态的事件源content: @Composable RowScope.() -> Unit     //按钮的作用域
)

Button的创建

Button(onClick = {  }) {Text(text = "确认")
}

注:onClick 是必选项,用于响应用户点击事件,content 也是必选项,用于显示Button的UI

Button显示水平方向的UI

Button(onClick = {  }) {Icon(imageVector = Icons.TwoTone.Done,contentDescription = null,modifier = Modifier.size(ButtonDefaults.IconSize))Spacer(modifier = Modifier.size(ButtonDefaults.IconSpacing))Text(text = "确认")
}

注:content: @Composable RowScope.() -> UnitRowScope 为水平方向作用域

IconButton是什么?

IconButton 是一个可点击的图标,一般都需要再IconButton组件提供一个图标组件

@Composable
fun IconButton(onClick: () -> Unit,              //点击事件modifier: Modifier = Modifier,    //修饰符enabled: Boolean = true,          //是否启用colors: IconButtonColors = IconButtonDefaults.iconButtonColors(), //图标按钮颜色interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },   //监听组件状态的事件源content: @Composable () -> Unit //作用域
)

IconButton是创建

IconButton(onClick = { },modifier = Modifier.size(16.dp)) {Icon(imageVector =Icons.Filled.Close,contentDescription = "关闭")
}

FloatingActionButton是什么?

FloatingActionButton是一个悬浮按钮,需要提供Icon组件

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun FloatingActionButton(onClick: () -> Unit,           //点击事件modifier: Modifier = Modifier, //修饰符shape: Shape = FloatingActionButtonDefaults.shape, //定义按钮形状和填充颜色containerColor: Color = FloatingActionButtonDefaults.containerColor, //按钮颜色contentColor: Color = contentColorFor(containerColor),      //图标颜色elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(),//阴影interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, //监听组件状态的事件源content: @Composable () -> Unit, //作用域
)

FloatingActionButton创建

FloatingActionButton(onClick = { }) {Icon(Icons.Filled.KeyboardArrowUp, contentDescription = null)
}

ExtendedFloatingActionButton是什么?

ExtendedFloatingActionButton是带有文字的悬浮框,和FloatingActionButton区别就是可以带有文字

ExtendedFloatingActionButton(onClick = { }, icon = { Icon( imageVector = Icons.Filled.Favorite, contentDescription = null)},text ={ Text(text = "添加到我喜欢")} 
)

总结

  1. Button是一个按钮组件
  2. IconButton是一个图标按钮组件
  3. FloatingActionButton是一个悬浮按钮,可以带有图标
  4. ExtendedFloatingActionButton是一个悬浮按钮,可以带有图标和文字
http://www.lryc.cn/news/289165.html

相关文章:

  • 【leetcode刷刷】235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作 、450.删除二叉搜索树中的节点
  • YoloV8改进策略:BackBone改进|DCNv4最新实践|高效涨点|多种改进教程|完整论文翻译
  • 高中数学常识
  • docker之部署青龙面板
  • Type-C平板接口协议芯片介绍,实现单C口充放电功能
  • 系统架构演变
  • Oracle PL/SQL Programming 第2章:Creating and Running PL/SQL Code 读书笔记
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Swiper容器组件
  • 『建议收藏』OpenAI官方出的Prompt提示词教程中文版来了!
  • 牛刀小试 - C++ 推箱子小游戏
  • 手机视频压缩怎么压缩?一键瘦身~
  • 目标主力能源:华为智能光伏的时代指南针
  • 每日一题 力扣2846 边权重均等查询
  • 【Docker】Docker学习⑨ - 单机编排之Docker Compose
  • ES6笔记-symbol
  • C++设计模式介绍:优雅编程的艺术
  • GitLab升级版本(任意用户密码重置漏洞CVE-2023-7028)
  • Unity——八叉树的原理与实现
  • android 自定义软键盘的显示和隐藏
  • 基于openssl v3搭建ssl安全加固的c++ tcpserver
  • 11.2 Web开发_CSS入门(❤❤)
  • [docker] Docker的数据卷、数据卷容器,容器互联
  • ATF(TF-A)安全通告TF-V11——恶意的SDEI SMC可能导致越界内存读取(CVE-2023-49100)
  • 如何查找SpringBoot应用中的请求路径(不使用idea)
  • 56. 合并区间 - 力扣(LeetCode)
  • 数据结构篇-03:堆实现优先级队列
  • linux clickhouse 安装
  • 【游戏客户端开发的进阶路线】
  • vue3+naiveUI二次封装的v-model 联动输入框
  • 百度Apollo | 实车自动驾驶:感知、决策、执行的无缝融合