Jetpack:007-Kotlin中的Button

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • 2.1 Button
    • 2.2 IconButton
    • 2.3 ElevatedButton
    • 2.4 OutlinedButton
    • 2.5 TextButton
    • 2.6 FloatingActionButton
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了Jetpack中输入框相关的内容,本章回中将要介绍 Button。闲话休提,让我们一起Talk Android Jetpack吧!

1. 概念介绍

我们在本章回中介绍的Button是指按钮,它是程序中常用的组件,它主要用来触发用户的点击事件,jetpack中提供了各种各样的Button,我们在本章回中将详细介绍这些Button的种类和使用方法。

2. 使用方法

2.1 Button

这个是最常用的按钮,它表示带有背景色的按钮,它通过Button可组合函数实现,该函数中常用的参数如下:

  • border参数:主要用来控制Button的边框;
  • colors参数:主要用来控制Button的背景色,文字颜色;
  • onClick参数:它是方法类型,主要用来响应Button的点击事件;

除了参数外,Button还可以通过尾部的lambda来组合其它组件,比如在尾部组合Text()可以给Button添加文字,组合Icon可以给Button添加图标。我们将在后面的小节中通过示例代码来演示它们的组合方法,同时也会演示如何使用上面介绍过的参数。

2.2 IconButton

该Button表示带有图标的按钮,按钮没有边框和背景色,它通过IconButton()可组合函数实现,该函数的参数和Button中的参数类似,因此不再介绍了。它可以组合Text()或者Icon()实现带文本或者图标的按钮,不过Text和Icon只能组合其中的一个函数,不能同时组合两个函数。

2.3 ElevatedButton

该Button表示没有边框但是有背景色的按钮,它通过ElevatedButton()可组合函数实现,该函数的参数和Button中的参数类似,因此不再介绍了。它可以组合Text()实现带文本的按钮。

2.4 OutlinedButton

该Button表示有边框但是没有背景色的按钮,它通过OutlinedButton()可组合函数实现,该函数的参数和Button中的参数类似,因此不再介绍了。它可以组合Text()实现带文本的按钮,它的效果和ElevatedButton()函数实现的按钮效果正好相反。

2.5 TextButton

该Button表示没有边框和背景色的按钮,它通过TextButton()可组合函数实现,该函数的参数和Button中的参数类似,因此不再介绍了。它可以组合Text()实现带文本的按钮。它的效果和文本类似,只是可以响应点击事件。

2.6 FloatingActionButton

该Button表示悬浮按钮,它不但有边框和背景色,还有阴影效果,它通过FloatingActionButton()可组合函数实现,该函数的参数和Button中的参数类似,因此不再介绍了。它可以组合Text()实现带文本的悬浮按钮。

还有一个ExtendedFloatingActionButton()函数也可以实现悬浮按钮,它可以同时组合Text和Icon两个函数,进而实现带有图标和文本的悬浮按钮。

3. 示例代码

Column(horizontalAlignment = Alignment.CenterHorizontally,verticalArrangement = Arrangement.SpaceBetween,modifier = Modifier.fillMaxWidth()
) {val interactionSource = remember {MutableInteractionSource()}//定义按钮不同状态下的颜色val pressState = interactionSource.collectIsPressedAsState()val borderColor = if (pressState.value) Color.Black else Color.Whiteval backgroundColor = if (pressState.value) Color.White else Color.Blackval textColor =  if (pressState.value) Color.Black else Color.White//基础button,圆角形状,无边框但是有背景色Button(border = BorderStroke(width = 2.dp, color = borderColor),colors = ButtonDefaults.buttonColors(containerColor = backgroundColor,contentColor = textColor),//用来控制按钮不同状态下的颜色interactionSource = interactionSource,onClick = {Log.d("tag","bt is clicked")}) {//图标和文本可以并列存放Icon(Icons.Filled.Add, contentDescription = null)Spacer(modifier = Modifier.size(8.dp))Text(text = "Add")}//带icon的button,不过icon和文字重叠了,无边框,无背景色IconButton(onClick = {  }) {Icon(Icons.Default.Add, contentDescription = null)Text(text = "Add")}//浅色背景的按钮,无边框有背景色ElevatedButton(onClick = {}) {Text(text = "Add")}//只有边框没有背景色的按钮OutlinedButton(onClick = {}) {Text(text = "Add")}//无边框,无背景色的按钮TextButton(onClick = {}) {Text(text = "Add")}//悬浮按钮,带有阴影效果FloatingActionButton(onClick = {}) {//图标和文字不能并列排放
//            Icon(Icons.Default.Add, contentDescription = null )Text(text = "add")}Spacer(modifier = Modifier.size(16.dp))ExtendedFloatingActionButton(onClick = {var temp = (1..99).random()textContent = "it is $temp"}) {//图标和文字可以并列排放Icon(Icons.Default.Add, contentDescription = null )Text(text = "add")}
}

上面的代码中演示了刚才介绍所有Button,其中包含Button中的参数以及Button和其它函数组合的用法。此外,我们还利用Button的interactionSource参数来动态修改Button的颜色,这样可以让Button在不同状态下显示不同的颜色,比如默认情况下显示黑色,点击按钮时显示白色。

下面是程序的运行效果图,请大家参考:
在这里插入图片描述

4. 内容总结

最后,我们对本章回中介绍的内容做一个总结:

  • 按钮是程序中常用的组件,它主要用来触发用户的点击事件;
  • 按钮通过可组合函数的参数控制自身的效果,以及响应用户的点击事件;
  • 按钮可以组合Text和Icon函数,实现带文本和图标和按钮;
  • 按钮有多个种类,不同种类的按钮只是显示效果不同,它们本质上的用法都一样;

看官们,关于Jetpack中Button组件相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

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

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

相关文章

使用【Blob、Base64】两种方式显示【文本、图片、视频】 使用 video 组件播放视频

Blob 显示 Blob 对象的类型是由 MIME 类型(Multipurpose Internet Mail Extensions)来确定的。MIME 类型是一种标准,用于表示文档、图像、音频、视频等多媒体文件的类型。以下是一些常见的 Blob 对象类型: text/plain&#xff1…

drone如何发布docker服务

上篇主要实现了drone在物理机上进行发布程序,这次介绍drone如何发布docker类型的服务。 一 drone.yml文件配置 前提:需要提前在drone里添加文件里面所引用的密钥 kind: pipeline # 定义对象类型,还有secret和signature两种类型 type: dock…

SaaS人力资源管理系统的Bug

SaaS人力资源管理系统的Bug Bug1【18】 这里我是直接把代码复制过来的&#xff0c;然后就有一个空白 这是因为它的代码有问题&#xff0c;原本的代码如下所示 <el-table-column fixed type"index" label"序号" width"50"></el-table…

Android之SpannableString使用

文章目录 前言一、效果图二、实现代码总结 前言 在开发中&#xff0c;往往有些需求是我们不愿意遇到的&#xff0c;但是也不得不处理的事情&#xff0c;比如一段文案&#xff0c;需要文案中某些文字变颜色或者点击跳转&#xff0c;所以简单写了几句代码实现&#xff0c;没什么…

java气候分析平台天气预报系统springboot+vue

保护措施 (自动编号、图片、措施简介、措施地点、措施时间、创建时间、措施详情、措施名称)&#xff1b; 报名信息 (自动编号、活动地点、图片、活动名称、活动时间、参与人数、活动详情、审核回复、创建时间、报名时间、手机、活动简介、是否审核、姓名、账号)&#xff1b; 配…

uniapp 一次性上传多条视频 u-upload accept=“video“ uni.chooseMedia uni.uploadFile

方式 一 部分安卓机 只能一条一条传视频 文档地址 uview 2.0 Upload 上传组件 html <view class"formupload"><u-upload accept"video":fileList"fileList3" afterRead"afterRead" delete"deletePic" name"…

Elasticsearch集群管理原理

Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎&#xff0c;设计用于云计算环境中&#xff0c;能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性&#xff0c;可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个…

算法练习13——跳跃游戏II

LeetCode 45 跳跃游戏 II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回…

【漏洞复现】安全云平台存在任意文件下载getshell

漏洞描述 深圳市强鸿电子有限公司鸿运主动安全云平台存在任意文件下载漏洞,攻击者可通过此漏洞下载敏感文件信息。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权…

el-table合计行合并

效果如下 因为合计el-table的合并方法是不生效的,所以需要修改css下手 watch: {// 应急物资的合计合并planData: {immediate: true,handler() {setTimeout(() > {const tds document.querySelectorAll(".pro_table .el-table__footer-wrapper tr>td");tds[0]…

C++笔记之std::future的用法

C笔记之std::future的用法 code review! 文章目录 C笔记之std::future的用法1.C中std::future和std::async总是一起出现吗&#xff1f;2.主要特点和用法3.一个完整的例子4.std::future 存放的是一个结果吗&#xff1f;5.cppreference——std::future 1.C中std::future和std::a…

数据分析基础:数据可视化+数据分析报告

数据分析是指通过对大量数据进行收集、整理、处理和分析&#xff0c;以发现其中的模式、趋势和关联&#xff0c;并从中提取有价值的信息和知识。 数据可视化和数据分析报告是数据分析过程中非常重要的两个环节&#xff0c;它们帮助将数据转化为易于理解和传达的形式&#xff0…

C++ - git 命令行

为什么要有 git 你很可能遇到过这种情况&#xff0c;在写项目的时候&#xff0c;要我不符合 leader 的要求&#xff0c;因而修改了很多个版本&#xff0c;但是修改到最后一版的时候&#xff0c;leader 有觉得当前这版还没有之前 某一版好&#xff0c;现在又要求你在 之前的那一…

OJ项目——用户的登录拦截,我是如何实现的?

目录 前言 1、关于Session该如何处理 简单session回顾&#xff1a; 回顾session的setAttribute、getAttribute : 项目中如何做&#xff1f; 2、登陆拦截器实现 自定义拦截器&#xff1a; 自定义拦截&#xff1a; 前言 博主之前也有出过一期关于拦截器的&#xff0c;大…

Zabbix监控系统详解2:基于Proxy分布式实现Web应用监控及Zabbix 高可用集群的搭建

文章目录 1. zabbix-proxy的分布式监控的概述1.1 分布式监控的主要作用1.2 监控数据流向1.3 构成组件1.3.1 zabbix-server1.3.2 Database1.3.3 zabbix-proxy1.3.4 zabbix-agent1.3.5 web 界面 2. 部署zabbix代理服务器2.1 前置准备2.2 配置 zabbix 的下载源&#xff0c;安装 za…

零代码编程:用ChatGPT批量采集bookroo网页上的英文书目列表

bookroo网页上有很多不错的英文图书书目。比如这个关于儿童花样滑冰的书单&#xff1a; https://bookroo.com/explore/books/topics/ice-skating 怎么批量下载下来呢&#xff1f; 这个网页是动态网页&#xff0c;要爬取下来比较麻烦&#xff0c;可以先查看源代码&#xff0c;…

Golang中gRPC使用及原理探究

文章目录 概述gRPC的优势&#xff1a; 1、gRPC入门1.1 protobuf安装1.2 使用gRPC1.2.1 定义proto文件1.2.2 编译proto文件1.2.3 编写客户端和服务端代码 2、gRPC的通信模式2.1 一元RPC模式2.2 客户端流RPC模式2.3 服务端流RPC模式2.4双向流RPC模式 3、 gRPC的底层原理探究3.1 H…

P1433 吃奶酪

#include <iostream> #include <cmath> using namespace std; #define M 15 #define S(n) ((n) * (n)) double indx[M 5], indy[M 5], ans 0, sum 0;//坐标数组&#xff0c;从下标为1开始记录 int n, vis[M 5] { 0 };//vis数组&#xff0c;选过的数字标记为1…

关于pytorch不区分行向量与列向量的理解

听李沐老师讲深度学习时候解释pytorch不区分行向量和列向量&#xff0c;只相当于是一维数组&#xff0c;一维张量一定是行向量&#xff0c;相当于数组&#xff0c;而行列向量可以放到矩阵中看。 测试如下&#xff1a; rtorch.tensor([1,2,3],dtypetorch.float32) print(r,r.T…

滑动窗口算法(C语言描述)

第一种类型&#xff1a;不固定长窗口 问题1&#xff1a;*** C代码1&#xff1a; #include<stdio.h> #include<string.h> #define N 5int min_len(int len1,int len2) {return (len1 < len2 ? len1:len2); }int main() {int target 0;int num[N];scanf("…