Android Jetpack Compose之OutlinedButton的使用

news2024/9/21 22:11:29

Android Jetpack Compose是一个现代化的UI工具包,它让开发者可以更方便地构建出美观且功能强大的Android应用。本文将详细介绍其中的一个重要组件——OutlinedButton

一. OutlinedButton简介

二. 如何使用OutlinedButton

三. 自定义OutlinedButton

四. OutlinedButton和Button和TextButton之间的区别


一. OutlinedButton简介

OutlinedButton是Jetpack Compose中的一个组件,主要用于实现带有边框的按钮。这个组件提供了一个干净、简洁的设计,同时也为开发者提供了丰富的自定义选项。

二. 如何使用OutlinedButton

要在Jetpack Compose中使用OutlinedButton,首先需要在你的@Composable函数中调用它。这里是一个简单的例子:

@Preview
@Composable
fun OutlinedButtonDemo(){
    OutlinedButton(onClick = {
        println("点击1")
    },
    border = BorderStroke(2.0.dp, Color.Green),
    colors = ButtonDefaults.buttonColors(Color.Red)
    ) {
        Text("Outlined Button")
    }
}

 在上述代码中,onClick参数是一个lambda表达式,用于处理用户点击按钮时的动作。border参数则用于定义按钮边框的样式,包括边框的宽度和颜色。最后,Text组件被用作OutlinedButton的子组件,用于显示按钮上的文字。

三. 自定义OutlinedButton

OutlinedButton组件提供了许多参数,让开发者可以根据需要进行自定义。以下是一些常见的自定义选项:

  • modifier:这个参数可以用于调整按钮的大小、形状和位置等属性。
  • colors:这个参数可以用于自定义按钮的颜色,包括默认颜色、点击时的颜色和禁用时的颜色等。
  • enabled:这个参数可以用于控制按钮是否可点击。
  • interactionSource:这个参数可以用于自定义按钮的交互效果。

以下是一个自定义OutlinedButton的例子:

@Preview
@Composable
fun CustomOutlinedButton(){
    OutlinedButton(
        onClick = {
            println("点击了")
        },
        border= BorderStroke(1.dp,Color.Blue),
        colors = ButtonDefaults.outlinedButtonColors(
            contentColor = Color.Red,
            backgroundColor = Color.Yellow
        ),
        modifier = Modifier
            .padding(16.dp)
            .width(200.dp)
            .height(50.dp),
        enabled = true,
        interactionSource = remember{ MutableInteractionSource() }
    ){
        Text(text = "Custom Outlined Button", fontSize = 10.sp, )
    }
}

在这个例子中,我们自定义了按钮的颜色、大小、形状、可点击性和交互效果。

四. OutlinedButton和Button和TextButton之间的区别

这些组件在视觉效果和用途上有所不同,但使用方式大体相同。

1.Button 是最基础的按钮组件,它的外观是一个有填充颜色的矩形区域,包含一些文本或图标。

2. OutlinedButton 是一个带有边框的按钮,内部没有填充颜色(或者说填充颜色是透明的)。这      种按钮常常用于需要较弱视觉提示的地方。

3. TextButton 是一个只包含文本,没有明显边框和填充颜色的按钮。这种按钮常常用在对视觉影响要求尽量小的场景,如对话框中的操作按钮。

虽然这三种按钮在外观上有所不同,但它们都接收一个 onClick 参数来处理点击事件,并且内部可以放置 Text 或其他组件来定义按钮的内容。

它们都可以使用 modifier 参数来调整按钮的大小、形状、位置等属性,使用 colors 参数来自定义按钮的颜色,使用 enabled 参数来控制按钮是否可点击,以及使用 interactionSource 参数来自定义按钮的交互效果。

总的来说,Jetpack Compose中的OutlinedButton是一个非常有用的组件,它提供了方便的方式来创建和自定义按钮。通过掌握它的使用方法,你可以更有效地开发出满足需求的Android应用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

两段代码共存于一个文件,编译时有选择的编译其中的一部分,有几种方法实现?如何实现?(笔试题)

两段代码共存于一个文件,编译时有选择的编译其中的一部分,请问有几种方法实现?如何实现? 1. 条件编译 使用预处理指令来控制代码的编译。通过在代码中添加条件编译指令,可以根据条件选择性地编译代码。条件编译指令通…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第八天 8/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

chatgpt赋能python:Python获取句柄的方法——在Windows平台上实现窗口控制

Python获取句柄的方法——在Windows平台上实现窗口控制 句柄(Handle)是Windows系统中非常重要的概念,它是一种指向资源对象的引用,以数字的形式来表示。在Windows上,所有资源对象都具有独特的句柄。窗口也是一种资源对…

【强化学习】常用算法之一 “Q-learning”

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

学习Kotlin~变量

变量定义 声明变量 var maximumAge: Int 5;数据类型全部都是引用类型 var y1: String "Hello World";var y2: Char A;var y3: Boolean true;var y4: Int 5;var y5: Double 3.14;var和val 声明可修改使用var声明只读使用val,只读变量并非绝对只读 …

FOTA S32K

目的 OTA的概括和挑战 理解 NXP是如何在自己的产品处理线上更新 了解如何处理低成本边缘节点mcu(如S32K设备)中的空中更新 背景 一般车辆更新固件需要 在经销商完成更新指定使用更新固件的工具引擎并非在运动状态目标节点应用被暂停主应用程序被擦出和在编程 动机 不断增…

flutter Android 自定义输出路径 apk名称

默认 Flutter flutter build apk, 是默认的名字 默认的路径,直接修改输出路径 会造成 打包可以,直接运行 会提示找不到 apk 文件; 这里的解决思路是:打包完成后 拷贝目标路径的 APK 到自定义的路径,这样既可以正常打…

XILINX 4种7系列FPGA的特点与应用场景详解

🏡《Xilinx FPGA开发宝典》 目录 1,概述2,性能成本分析3,性能提升方法4,总结 1,概述 7系列FPGA包括Spartan-7,Artix-7,Kintex-7和Virtex-73类,分别简称为S7,A7,K7和V7。本…

【数据结构OJ题】移除链表元素

移除链表元素 原题链接:力扣 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回新的头节点 。 方法一:原地删除节点 思路: 首先,定义两个指针&#xff1…

minikube从入门到精通系列之一:部署minikube详细步骤

minikube从入门到精通系列之一:部署minikube详细步骤 一、认识Minikube二、Minikube核心知识点三、minikube官方地址四、minikube 启动五、minikube的配置需求六、Mac安装minikube七、CenotOS7上安装minikube八、启动集群九、与集群交互十、部署应用程序1.Service2.…

方向元件软件原理

三段方向电流保护的方向元件,可以由软压板选择正方向、反方向动作方式。这里仅以正方向为例来说明方向元件原理。 为了保证在各种相间短路故障时,方向元件能可靠而灵敏动作,微机保护的方向元件的“接线方式”(指软件的接线方式&am…

深度学习(25)——YOLO系列(4)

深度学习(25)——YOLO系列(4) 文章目录 深度学习(25)——YOLO系列(4)1. dataset准备(1)数据详解(2)dataset(3)…

Navicat连接Oracle报错:Oracle library is not loaded

Navicat连接Oracle报错:Oracle library is not loaded 用Navicat连接Oracle数据库时报错:Oracle library is not loaded 解决办法:::!! 这是oci.dll版本不对。因为Navicat是通过Oracle客户端…

11. requests.post()函数访问网页(小白入门)

11. requests.post()函数访问网页(小白入门) 文章目录 11. requests.post()函数访问网页(小白入门)1. 常用的http请求方法2. requests.post()语法3. 确定请求网址和请求方法4. 开发者工具中的Fetch/XHR表示什么5. requests.post()访问网页实操5.1 导入库,随机生成一…

Linux磁盘不足,解决办法

解决 一 查看 Linux大于1G的文件 命令 sudo find / -type f -size 1G -exec ls -lh {} \; 解决 二 清理docker的日志 Docker日志可能会占用大量的磁盘空间。可以使用以下命令清理Docker日志: sudo truncate -s 0 /var/lib/docker/containers/*/*json.log 解决…

5G无线帧结构与空口资源

时域资源分配< Time Domain Resource Allocation > 下表指示了传送SS/PBCH的第一个OFDM符号号码&#xff0c;基于TS38.213-4.1 cell search。 1. 子载波间隔 Numerology - Subcarrier Spacing 在载波间隔subcarrier spacing和时域的符号长度symbol length方面&#xff…

Kafka可视化平台EFAK搭建及使用

文章目录 1.EFAK可视化平台介绍2.搭建EFAK可视化平台2.1.安装JDK环境2.2.安装MySQL数据库2.3.下载EAK二进制安装包并部署2.4.配置EFAK连接Zookeeper集群2.5.调整Eagle启动文件中的变量信息2.6.启动EFAK可视化平台 3.使用EFAK可视化平台3.1.登陆EFAK可视化平台3.2.EFAK仪表盘展示…

智云通CRM:识破客户在谈判中的十大谎言

智云通CRM系统是一款专为企业打造的客户管理系统&#xff0c;可以有效帮助企业进行客户关系管理、数据分析和数字化转型。在销售过程中&#xff0c;客户谈判是不可避免的环节。然而&#xff0c;客户在谈判中经常会说一些谎言&#xff0c;以获取更有利的交易条件。对于销售人员来…

【Docker】Docker Desktop更换非C盘符(减轻占用率)

Win10中的Docker Desktop调整到其他盘符&#xff0c;由于新版本已经不让修改软连接了&#xff0c;只好另谋策略&#xff0c;最终还是改成功了。 出现问题 使用软连接修改 上面代码我们可以科幻的理解一下 幻想破灭 //TODO 用户点击执行安装 if(检查文件夹是否软连接){有则&a…

ThinkPHP6基础使用

ThinkPHP6基础使用 前言1.基础1.1 开启调试模式1.2测试运行1.3单应用模式和多应用模式区别1.4安装视图1.5模板渲染1.6模板赋值 总结 前言 这里的操作可能有点难懂&#xff0c;没关系的&#xff0c;只需要了解大致的框架构造就可以了 1.基础 1.1 开启调试模式 通过create-proje…