使用 Jetpack Compose 的 TextButton 组件

news2024/11/18 1:50:43

Jetpack Compose 是 Google 推出的一种声明式 UI 框架,它使 Android UI 开发变得更加简单和直观。在本篇博客中,我们将深入探索 Jetpack Compose 中的 TextButton 组件。

一、TextButton的使用

二、自定义TextButton

三、Button和TextButton的区别


一、TextButton的使用

在 Android 开发中,按钮是最常用的 UI 组件之一。Jetpack Compose 提供了一个名为 TextButton 的组件,可以轻松创建和自定义文本按钮。下面是一个简单的例子:

@Composable
fun MyScreen() {
    TextButton(onClick = { /* Do something when button is pressed */ }) {
        Text("Click Me")
    }
}

在这个例子中,我们首先创建了一个 TextButton 组件,然后在 onClick 属性中提供了一个 lambda 表达式,用于定义当按钮被点击时的行为。然后我们将一个 Text 组件作为 TextButton 的子组件,提供了要显示在按钮上的文本。

二、自定义 TextButton:

TextButton 是完全可定制的。例如,你可以通过修改 colors 属性来改变按钮的颜色:

@Preview
@Composable
fun textButton(){
    Column(modifier=Modifier.padding(10.dp)){
        TextButton(onClick={
            println("点击了1")
        }){
            Text(text = "Click Me")
        }
        //自定义
        TextButton(onClick={
                println("点击了2")
            },
            colors= ButtonDefaults.textButtonColors(
                backgroundColor = Color.Red,
                contentColor = Color.Green
            )){
                Text(text = "Click Me")
        }
    }
}

在这个例子中,我们使用 ButtonDefaults.textButtonColors 来创建一个新的颜色方案,然后应用到我们的按钮上。我们设置了按钮的背景色为蓝色,文本颜色为白色。

三、Button和TextButton的区别

Jetpack Compose提供了多种按钮样式,以便在不同的场景和上下文中使用。其中,ButtonTextButton都是最常用的两种类型。然而,尽管它们的功能类似,但在设计和用途上,它们确实有所不同。

  • Button:这是一个标准的填充按钮,它有一个可见的背景和可选的边框。它们的设计更加明显和引人注目,因此更适合主要操作或需要用户注意的功能。

  • TextButton:这是一个文本按钮,没有明显的背景,只有文本。它们的设计更为简洁和微妙,使它们更适合次要操作或不太需要用户注意的功能。

所以,TextButtonButton在视觉上和用途上都有所不同,它们可以根据需要在不同的情况下使用。这种灵活性使得用户界面可以根据其内容和功能进行更精细的定制。

@Preview
@Composable
fun textButton(){
    Column(modifier=Modifier.padding(10.dp)){
        TextButton(onClick={
            println("点击了1")
        }){
            Text(text = "Click Me")
        }
        //自定义
        TextButton(onClick={
                println("点击了2")
            },
            colors= ButtonDefaults.textButtonColors(
                backgroundColor = Color.Red,
                contentColor = Color.Green
            )){
                Text(text = "Click Me")
        }

        Button(colors = ButtonDefaults.buttonColors(backgroundColor = Color.Green), modifier = Modifier.background(Color.Red),onClick = {  println("点击了3") }) {
            Text(text = "Click Button")
        }
    }
}

 

结论:

TextButton 是 Jetpack Compose 提供的一个强大且灵活的组件,它可以让你轻松地创建和自定义文本按钮。通过使用声明式的语法和丰富的自定义选项,你可以将你的 UI 设计带到新的高度。下一次当你需要在你的应用中添加一个文本按钮时,不妨试试 TextButton!

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

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

相关文章

搜索算法特训 ----- Week5/6/7 (它太重要了)

学会二叉树不知道干啥?二叉树的深度优先搜索和广度优先搜索,我要打十个乃至二十个(打开你的LeetCode撸起来)学练并举_二叉树广度优先搜索_小杰312的博客-CSDN博客 上述文章,初步介绍了搜索过程和关于二叉树中进行搜索的很多实例。将搜索的过程写的还是很详细的。很…

网站出现卡顿是什么原因,要怎么解决?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言网站卡顿的原因解决…

人工智能算法在外卖配送系统中的应用和前景

随着人们对于外卖服务需求的增加,外卖配送系统的效率和精确度成为了重要的考虑因素。而人工智能算法的出现,则为外卖配送系统提供了更好的解决方案。 一、应用场景 1.1 路线规划 在外卖配送过程中,路线的规划是非常重要的。通过人工智能算…

一线大厂最全Java面试题及答案整理汇总(2023最新版)

程序员一步入中年,不知不觉便会被铺天盖地的“危机感”上身,曾经的那个少年已经不在,时间就是这样公平。就算你能发明 Java 语言,随着时间的推移,你注定还是要成为慢慢变蔫的茄子,缓缓变黑的葡萄。 看着金…

uniapp 自定义发行 动态修改 manifest.json

这边需求是:根据不同的打包环境 设置不同的标题以及路径。方便各种调试。防止 每次手动每次修改 manifest.json 出错 uniapp 自定义发行: 添加自定义发行之后 Hbuilder 编辑器会自动多 出来按钮: 官方文档:概述 | uni-app官网 我这里的配置是…

大数据开发基础-环境配置篇-Hadoop集群安装

鼠鼠接下来将更新一系列自己在学习大数据开发过程中收集的资源、和自己的总结、以及面经答案、LeetCode刷题分析题解。 首先是大数据开发基础篇 环境搭建、组件面试题等 其次是更新大数据开发面经的java面试基础 最后更新一个大数据开发离线数仓的实战项目,自己写入…

利用R中的corrmorant包绘制精美的相关性热图

大家好,我是带我去滑雪! 相关性热图 (correlation heatmap) 是一种可视化工具,用于展示数据集中各个变量之间的相关性。它以矩阵的形式显示变量之间的相关系数,并通过色彩编码来表示相关性的强度。在相关性热图中,每个…

html面试题-概念题汇总

文章目录 html面试题汇总 src和href的区别 HMTL的全局属性有哪些? 超链接访问过后hover样式就不出现的原因是什么?怎么解决? 表单中readonly和disabled属性的区别? iframe的优缺点? 浏览器渲染页面的过程 viewport属性…

GO channel解析

GO channel解析 是什么? 官方文档: https://go.dev/ref/spec#Channel_typeshttps://go.dev/blog/pipelines(channel提供了流式编程的例子) 在 Go 语言中,channel 是一种用于在 goroutine 之间进行通信和同步的机制。…

【FFmpeg实战】音频解码与编码流程

解码流程 音频编解码流程与视频编解码流程一致,我们可以对 mp4 文件的音频流进行解码,并将解码后的音频数据保存到 PCM 文件中,后续我们可以通过读取 PCM 文件中的数据实现音频流的编码操作 FFmpeg音频解码流程 extern"C" { #inc…

ICC2: Create Placement Blockage

area-based的placement blockage有四种,hard、hard macro、soft,partial。hard 属性限制所有standard cell、hard macro放进hard blockage中;hard macro仅限制hard macro(如sram);soft属性限制placement的init_place阶段(也叫coarse placement)把standard cell和hard macro…

Vuex学习

5.1.理解 Vuex 5.1.1.Vuex 是什么 概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对Vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适…

深度学习05-CNN循环神经网络

概述 循环神经网络(Recurrent Neural Network,RNN)是一种具有循环连接的神经网络结构,被广泛应用于自然语言处理、语音识别、时序数据分析等任务中。相较于传统神经网络,RNN的主要特点在于它可以处理序列数据&#xf…

超全汇总,性能测试常用指标大全(重要)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 两种性能指标 业…

Java又双叒叕“凉”了?

前几天,TIOBE的一份6月编程语言榜单公布:Java退出前三,位居第四。一波Java凉了的言论甚嚣尘上。其实不止Java,python、C、C,哪一个没被提过“凉”... 而现实是,Java的招聘需求依然很大: 不可否…

C++静态和动态链接库导出和使用

1、简介 代码开发过程中会遇到很多已有的函数库,这些函数库是现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是一种…

便携式水质自动采样器助力毒情监测

便携式水质自动采样器可助力毒情监测: 污水涉毒采样检测工作是运用科技手段准确评估监测辖区内毒情形势的重要手段。期间,民警详细了解了生活和工业污水的处理、排放以及服务范围、人口数量等情况,并就污水涉毒采样检测工作达成共识。随后&am…

revit中用幕墙来绘制瓦片屋面和生成土钉墙

一、revit中用幕墙来绘制瓦片屋面 层层叠叠的瓦片在我们绘制时具有复杂性,瓦片既美观又满足一些建筑的需要,下面教大家一个用幕墙来绘制瓦片屋面。 新建一个族样板选择公制轮廓—竖挺,绘制我们的瓦片形状 简单的绘制一个瓦片的形状&#xff0…

JVM学习整理(一)

一、JVM的基本介绍 JVM 是 Java Virtual Machine 的缩写,它是一个虚构出来的计算机,一种规范。通过在实际的计算机上仿真模拟各类计算机功能实现 好,其实抛开这么专业的句子不说,就知道JVM其实就类似于一台小电脑运行在windows或…

ruoyi-vue前后端分离项目实现一体化打包(前后端合并打包)

场景 现在要对ruoyi-vue前后端分离项目,进行一体化打包,即 将前后端项目打在一个jar里面 一体化打包优点 不需要再使用nginx,直接将前端文件放到后端项目里面 改造ruoyi-vue项目 后端改造 1、引入依赖spring-boot-starter-thymeleaf &…