002 Jetpack Compose基础组件学习

news2024/11/25 23:02:40

1.Text组件

Text组件就是原先的TextView组件,用法还是挺简单的,如下就是简单的Text用法:

package com.test.compose

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.test.compose.ui.theme.ComposeTestTheme

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeTestTheme {
                // A surface container using the 'background' color from the theme
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    Greeting("Compose")
                }
            }
        }
    }
}

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!"
    )
}

上述的代码在真机显示效果就是Hello Compose!,如下:

 上述就是一个文字简单的使用,如果需要则是将Text中传参:

fun Text(
    text: String,                                        //文本内容
    modifier: Modifier = Modifier,                       //很复杂,参考:https://developer.android.google.cn/jetpack/compose/modifiers-list?hl=zh-cn 
    color: Color = Color.Unspecified,                    //文本颜色
    fontSize: TextUnit = TextUnit.Unspecified,           //文本大小 
    fontStyle: FontStyle? = null,                        //文本样式
    fontWeight: FontWeight? = null,                      //绘制文本时使用的字体粗细(例如 FontWeight.Bold)  
    fontFamily: FontFamily? = null,                      //渲染文本时使用的字体系列。请参阅 TextStyle.fontFamily。
    letterSpacing: TextUnit = TextUnit.Unspecified,      //每个字母之间添加的空格量。请参阅 TextStyle.letterSpacing。
    textDecoration: TextDecoration? = null,              //在文本上绘制的装饰(例如下划线)。请参阅 TextStyle.textDecoration。
    textAlign: TextAlign? = null,                        //段落行内文本的对齐方式。参见文本样式
    lineHeight: TextUnit = TextUnit.Unspecified,         //TextUnit 单位中段落的行高,例如SP 或 EM。请参阅 TextStyle.lineHeight。
    overflow: TextOverflow = TextOverflow.Clip,          //应如何处理视觉溢出。如果多余文字怎么处理,例如多余文字不显示
    softWrap: Boolean = true,                            //softWrap为false只能单行显示
    maxLines: Int = Int.MAX_VALUE,                       //最大行数,如果上面softWrap为false最大行数设置是无作用的
    onTextLayout: (TextLayoutResult) -> Unit = {},       //计算新文本布局时执行的回调。
    style: TextStyle = LocalTextStyle.current            //文本的样式配置,例如颜色、字体、行高等。
)

如上的字段设置后的显示效果:

2.Button组件

Button是非常常见的组件,使用也非常简单,就是将Button加进去即可,如下:

    Column() {
        Text(
            text = "Hello11111111111222222222111111111111111111111111111111111111111111111111111111111111 $name!",
            color = Color.Blue,     //字体颜色蓝色
            fontSize = 30.sp,       //字体大小30sp
            fontStyle = FontStyle.Italic,   //字体风格斜体
            fontWeight = FontWeight.Bold,   //字体加粗
            fontFamily = FontFamily.Cursive,//字体系列
            letterSpacing = 10.sp,          //文字间隔10sp
            textDecoration = TextDecoration.Underline,     //文字加下划线
            textAlign = TextAlign.End,       //段落右对齐
            lineHeight = 50.sp,              //每行高度,注意不是文字高度,是文字所在行高度
            overflow = TextOverflow.Ellipsis,    //超过行数多余部分文字截取并用...表示
            softWrap = true,                 //是否单行显示,true不是单行显示
            maxLines = 2                     //显示两行
        )
        Button(onClick = { /*TODO*/ }) {

        }
    }

如上代码显示效果:

 显示效果可以看出来是只有一个按钮没有文字的,如下是Button的详细传参:

fun Button(
    onClick: () -> Unit,                //点击事件
    modifier: Modifier = Modifier,      //同上,很复杂  
    enabled: Boolean = true,            //控制该按钮的启用状态。当为 false 时,该组件将不会响应用户输入,并且它将显示为视觉上禁用并且对辅助服务禁用。
    shape: Shape = ButtonDefaults.shape,//定义此按钮的容器、边框(当边框不为空时)和阴影(当使用高度时)的形状
    colors: ButtonColors = ButtonDefaults.buttonColors(),//ButtonColors 将用于解析此按钮在不同状态下的颜色。请参阅 ButtonDefaults.buttonColors。
    elevation: ButtonElevation? = ButtonDefaults.buttonElevation(),//控制按钮下方阴影的大小
    border: BorderStroke? = null,        //围绕该按钮的容器绘制的边框
    contentPadding: PaddingValues = ButtonDefaults.ContentPadding,    //在容器和内容之间内部应用的间距值
    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },//MutableInteractionSource 表示此按钮的交互流。您可以创建并传入您自己记住的实例来观察交互并自定义该按钮在不同状态下的外观行为。
    content: @Composable RowScope.() -> Unit
) {
//此处可以包装不同的组件,例如:Text
}
        Button(
            onClick = {
                Toast.makeText(context, "我被点击了!", Toast.LENGTH_SHORT).show()
            },
        ) {
            Text(text = "我是按钮")
        }

如上代码然后在手机上面显示交互过程如下:

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

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

相关文章

(搜狗输入法)自定义输入日期格式

需求 想要按特定格式快速输入当天的日期戳:XXXX-XX-XX,如 2023-07-13 方法 参考链接:搜狗输入时间日期格式输入及自定义 按上述教程操作,自定义短语表达式:#$year-$month_mm-$day_dd 即可实现用搜狗输入法输入“r…

Table Recognition Metric: 表格识别算法评测工具包及相关评测基准数据集

Table Recognition Metric 该库用于计算TEDS指标,用来评测表格识别算法效果。可与魔搭-表格识别测试集配套使用。TEDS计算代码参考:PaddleOCR 和 DAVAR-Lab-OCR 使用说明: Install package by pypi.pip install table_recognition_metricRu…

2023-7-13-第十八式观察者模式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

【python手写算法】【多元】利用梯度下降实现线性拟合

本来是想做一个特征缩放的,然鹅发现我那种归一化缩放反而让训练速度变慢了。。先搞一个二元的。 if __name__ __main__:X1 [12.46, 0.25, 5.22, 11.3, 6.81, 4.59, 0.66, 14.53, 15.49, 14.43,2.19, 1.35, 10.02, 12.93, 5.93, 2.92, 12.81, 4.88, 13.11, 5.8,29.…

135432-37-0,Cyclo(-Gly-Arg-Gly-Asp-Ser-Pro)多肽合成(化学)方法

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ ---试剂基团反应特点(Reagent group reaction characteristics)--- 多肽试剂Cyclo(-Gly-Arg-Gly-Asp-Ser-Pro)(CAS号:135432-37-0),目前多肽合成中&a…

左神算法中级提升(4) 超级重点:动态规划的空间压缩技巧

【案例1】 【题目描述】【以后出现这种的题型 概率很低】 【案例2】 【题目描述】 【思路解析】 构建两个栈,一个栈存放基本数据,一个栈存放最小值数据。每次加入一个数据时,当前元素和栈顶元素比较,谁小谁进入。 然后弹出时&a…

Hugging News #0710: 体验 MusicGen、Diffusers 库发布一周年、我们的内容政策更新

每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息&#xff0…

[PyTorch][chapter 44][时间序列表示方法4]

前言: 训练复杂度 OE*T*Q 参数 全称 E 迭代次数 Number of the training epochs T数据集大小 Number of the words in the training set Q 模型计算复杂度 Model computational complexity E,T 一般都认为相同,所以这里面主要讨论Q,模…

maven-依赖管理-下

依赖冲突 特殊优先 特殊优先∶当同级配置了相同资源的不同版本&#xff0c;后配置的覆盖先配置的(提醒&#xff1a;要尽量避免这种没有意义的冲突)修改D:\java_projects\maven_A\pom.xml, 引入mysql5.1 <?xml version"1.0" encoding"UTF-8"?> &…

什么是用电信息采集系统?

用电信息采集系统是一种用于收集、处理和分析电力用户用电信息的系统&#xff0c;旨在提高电力系统的运行效率、可靠性和安全性。该系统主要通过对电力用户的用电数据进行实时监测、分析和处理&#xff0c;为电力公司、政府部门和用户提供有用的信息&#xff0c;以帮助他们更好…

PyTorch 1.13简介

# 1.  PyTorch 1.13 据官方介绍&#xff0c;PyTorch 1.13 中包括了 BetterTransformer 的稳定版&#xff0c;且不再支持 CUDA 10.2 及 11.3&#xff0c;并完成了向 CUDA 11.6 及 11.7 的迁移。此外 Beta 版还增加了对 Apple M1 芯片及 functorch 的支持。 1.1 主要更新 Be…

JavaWeb 前后端分离

AJax 1. 前端视图 ajax\src\main\webapp\ajax-register.html <html><head><meta charset"UTF-8"> </head><body><form class"form-horizontal" role"form"><div><tr><td>账号</td&…

数据库主从同步

目录 一、准备工作1.1 安装或关闭以下服务1.2 本次安装环境 2、主数据库配置2.1主数据库配置2.2创建用户2.3查看信息 三、从主数据库配置3.1从数据库配置3.2连接主服务器3.3测试 4、其他4.1连接完毕后发现Slave_IO_Running值异常&#xff0c;4.2报错Error connecting to source…

第一阶段-第七章 Python的函数进阶

目录 一、函数多返回值  1.学习目标  2.多个返回值的语法  3.本节的代码演示 二、函数多种传参方式  1.学习目标  2.函数参数种类&#xff08;位置参数、关键字参数、缺省参数、不定长参数&#xff08;位置传递、关键字传递&#xff09;&#xff09;  3.本节的代码…

一条命令解决端口占用,开启mysql

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录 端口占用开启mysql 端口占用 如果发现 8080 端口被占用可以使用命令 sudo lsof -t -i:8080 | sudo xargs kill -9 查找并杀死相应的进程。 开启mysql 打开命令提示符或终端。如果您已经安装了MySQL&…

【雕爷学编程】Arduino动手做(161)---16路PWM舵机驱动板PCA9685

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

HTML语法

文章目录 前言HTML 文件基本结构常见标签标签种类特殊符号图片链接a链接 双标签链接 列表表格 &#xff1a;表单多行文本域: 前言 HTML是有标签组成的 <body>hello</body>大部分标签成对出现. 为开始标签, 为结束标签. 少数标签只有开始标签, 称为 “单标签”. 开…

第二章:类和对象(中)

系列文章目录 文章目录 系列文章目录前言类的6个默认成员函数构造函数概念特性 析构函数概念特性 拷贝构造函数概念特征 赋值运算符重载运算符重载赋值运算符重载赋值运算符重载格式赋值运算符只能重载成类的成员函数不能重载成全局函数用户没有显式实现时&#xff0c;编译器会…

【物理】模拟粒子在电场和磁场中的轨迹研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Mysql的分库分表策略

一.水平切分 水平切分又称为 Sharding 策略&#xff0c;它是将同一个表中的记录拆分到多个结构相同的表中。 当一个表的数据不断增多时&#xff0c;Sharding 是必然的选择&#xff0c;它可以将数据分布到集群的不同节点上&#xff0c;从而缓存单个数据库的压力。 Sharding 策…