前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jetpack Compose中Modifier方法介绍

Jetpack Compose中Modifier方法介绍

作者头像
码客说
发布2024-03-29 12:54:48
740
发布2024-03-29 12:54:48
举报
文章被收录于专栏:码客码客

前言

在 Compose 中,Modifier 的调用顺序是有影响的。

修饰符列表

https://android-dot-google-developers.gonglchuangl.net/jetpack/compose/modifiers-list?hl=zh-cn

背景

代码语言:javascript
复制
Modifier.background(Color.Green))

内外边距和背景

在 Compose 中,背景色使用 Modifier.background() 进行设置。

在 Compose 中,Margin 和 Padding 都用 Modifier.padding() 来设置。

  • 没有background的时候是外边距
  • background的时候在background之前的是外边距,在background之后是内边距
  • padingbackground一定要写在heightwidth前面不然会不起作用

示例:

代码语言:javascript
复制
// 背景色不包括 padding 的部分,效果类似 margin
Text(text = "Compose 学习", modifier = Modifier
    .padding(8.dp)
    .background(Color.Green))

// 背景色包括 padding 的部分,效果类似 padding
Text(text = "Compose 学习", modifier = Modifier
    .background(Color.Green)
    .padding(8.dp))

// 同时设置了 padding 和 margin 的效果
Text(
    text = "Compose 学习", modifier = Modifier
        .padding(8.dp)
        .background(Color.Green)
        .padding(8.dp)
)

background 还可以传入 shape 参数,来设置不同的背景形状。

Shape 对象也是一个通用的能力,例如,可以用于 clip 当中,进行裁切。

裁剪

clip: 用于裁剪组件的内容,以匹配指定的形状。

代码语言:javascript
复制
Modifier.clip(shape = CircleShape)

注意

它不会裁剪背景。 它会剪裁可点击项的涟漪效果的遮罩背景。

背景裁剪:只能通过设置背景形状实现。

代码语言:javascript
复制
Modifier
    .padding(20.dp)
    .fillMaxWidth()
    .background(Color.White.copy(0.5f),RoundedCornerShape(16.dp))
    .border(1.dp, Color.White, RoundedCornerShape(16.dp))
    .clip(RoundedCornerShape(16.dp))
    .padding(20.dp)

边框

border: 用于向组件添加边框。

代码语言:javascript
复制
Modifier.border(width = 2.dp, color = Color.Black)

透明度

代码语言:javascript
复制
Modifier.alpha(0.5f)

尺寸设置

固定大小

layout_width & layout_height => Modifier.size() or (Modifier.width() & Modifier.height())

size: 用于设置组件的固定大小。

代码语言:javascript
复制
Modifier.size(width = 100.dp, height = 100.dp)

Modifier.size(100.dp)

自身大小

默认是 wrap_content

适配父大小

match_parent => Modifier.fillMaxWidth() or Modifier.fillMaxHeight()

对齐

align: 用于指定组件在其父容器中的对齐方式。

align 方法用于指定组件在其父容器中的对齐方式。它适用于容器类组件,如 BoxColumnRow 等,以及具有布局属性的组件,如 BoxWithConstraints

align 方法生效的情况取决于父容器的布局方式。通常情况下,父容器需要使用相应的布局修饰符,如 Box 中的 BoxScopeColumn 中的 ColumnScopeRow 中的 RowScope

代码语言:javascript
复制
Box(
    modifier = Modifier
        .size(100.dp)
        .background(Color.Red)
) {
    Box(
        modifier = Modifier
            .size(50.dp)
            .background(Color.Blue)
            .align(Alignment.Center)
    ) {
        // Content
    }
}

Column中使用:

代码语言:javascript
复制
Column(
    modifier = Modifier
        .fillMaxHeight()
        .fillMaxWidth(),
    verticalArrangement = Arrangement.Center,
    horizontalAlignment = Alignment.CenterHorizontally
) {
    Box(
        modifier = Modifier
            .size(50.dp)
            .background(Color.Blue)
            .align(Alignment.CenterHorizontally)
    ) {
        // Content
    }
}

位置

offset: 用于将组件从其默认位置移动指定的偏移量。

代码语言:javascript
复制
Modifier.offset(x = 20.dp, y = 20.dp)

事件

clickable: 用于使组件可点击,并指定点击事件的处理程序。

代码语言:javascript
复制
Modifier.clickable(onClick = { /* 点击事件处理 */ })

pointerInput: 用于处理指针输入事件,例如触摸或鼠标事件。

代码语言:javascript
复制
Modifier.pointerInput { /* 处理指针输入事件的逻辑 */ }

文字大小

文字大小使用函数参数(fontSize)设置,而不是 Modifier

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 背景
  • 内外边距和背景
  • 裁剪
  • 边框
  • 透明度
  • 尺寸设置
    • 固定大小
      • 自身大小
        • 适配父大小
        • 对齐
        • 位置
        • 事件
        • 文字大小
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档