广告
返回顶部
首页 > 资讯 > 移动开发 >JetpackCompose布局的使用详细介绍
  • 296
分享到

JetpackCompose布局的使用详细介绍

2024-04-02 19:04:59 296人浏览 八月长安
摘要

目录一.标准布局组件二.修饰符三.滑动组件1.ScrollableRow和ScrollableColumn2.LazyRowFor和LazyColumnFor一.标准布局组件 Com

一.标准布局组件

Compose中可以将多个控件元素组合使用,例如下面这样,

@Composable
fun WidgetGroup() {
    Text(text = "不为往事扰")
    Text(text = "余生只愿笑")
}

但是我们会发现,如果仅仅是这样,两个文本控件会重叠在一起,类似于下面这种样式:

如果我们想将多个控件垂直摆放在一起,可以在控件外层添加Column:组件

@Composable
fun WidgetGroup() {
    Column {
        Text(text = "不为往事扰")
        Text(text = "余生只愿笑")
    }
}

如果想要水平摆放在页面上可以使用 Row组件

@Composable
fun WidgetGroup() {
    Row {
        Text(text = "不为往事扰")
        Text(text = "余生只愿笑")
    }
}

二.修饰符

如果我们还想在文字下面添加一张图片,可以直接添加一个Image控件:

@Composable
fun WidgetGroup() {
    val image = imageResource(id = R.drawable.header)
    val imageModifier = Modifier
        .preferredHeight(180.dp)
        .fillMaxWidth()
        .clip(RoundedCornerShape(10.dp))
    Column {
        Text(text = "不为往事扰")
        Text(text = "余生只愿笑")
        Spacer(modifier = Modifier.preferredHeight(10.dp))
        Image(asset = image, modifier = imageModifier, contentScale = ContentScale.Crop)
    }
}

Spacer控件是用来填充空白的,我们还可以添加Modifier修饰符来修饰各种控件和组件。具体用法可以参考官方api,例如这里我们可以利用修饰符来添加图片的圆角。

现在我们在来优化一下这个布局,在文字的左边加一个圆形头像,来看看应该怎么添加吧:

  val imageHead=Modifier.preferredSize(50.dp)
        .clip(CircleShape)
   Column(modifier = Modifier.padding(10.dp)){
        Row (verticalAlignment = Alignment.CenterVertically){
            Image(asset = image,modifier = imageHead,contentScale = ContentScale.Crop)
            Spacer(modifier = Modifier.preferredSize(10.dp))
            Column {
                Text(text = "不为往事扰")
                Text(text = "余生只愿笑")
            }
        }
        Spacer(modifier = Modifier.preferredHeight(10.dp))
        Image(asset = image, modifier = imageModifier, contentScale = ContentScale.Crop)
    }

我们需要将这两个文本控件用Column包裹起来,然后在它的上级在用Row包裹,在Row里面添加一个Image控件,利用修饰符来对Image进行裁剪,使其变成圆形。来看看效果吧。

三.滑动组件

1.ScrollableRow和ScrollableColumn

使用 ScrollableRowScrollableColumn 可使 RowColumn 内的元素滚动。

@Composable
fun ScollableWidget() {
    ScrollableColumn(Modifier.fillMaxSize()) {
        for (i in 1..10) {
            WidgetGroup()
        }
    }
}

如果要显示的元素很少,这种方法效果很好,但对于大型数据集,很快就会出现性能问题。如需仅显示屏幕上可见的部分元素,请使用 LazyColumnForLazyRowFor

2.LazyRowFor和LazyColumnFor

RecyclerView类似,LazyColumnForLazyRowFor不会布置或呈现屏幕外的任何可组合项。使用方式也很简单,也不需要适配器,直接调用方法即可,可以设置数据,以及修饰符等等

    LazyColumnFor(items = getUsers()) {
        WidgetGroup(it.userName)
    }
    LazyRowFor(items = getUsers()) {
        WidgetGroup(it.userName)
    }

可以看一下其需要传入的参数,有数据源,修饰符,padding,以及Alignment,大部分都是用来调整页面样式的,最后一个是用来声明单个item的样式布局。当然如果我们想使用不同的item布局的话只需要在声明item样式的时候新增判断就可以了。

@Composable
fun <T> LazyColumnFor(
    items: List<T>,  //用来填充列表的数据源
    modifier: Modifier = Modifier, //用来修饰列表的样式
    state: LazyListState = rememberLazyListState(),
    contentPadding: PaddingValues = PaddingValues(0.dp), //用来设置item之间的间距
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,//用来设置对齐位置
    itemContent: @Composable LazyItemScope.(T) -> Unit //用来声明item样式布局
) 

到此这篇关于Jetpack Compose布局的使用详细介绍的文章就介绍到这了,更多相关Jetpack Compose布局内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JetpackCompose布局的使用详细介绍

本文链接: https://www.lsjlt.com/news/166953.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JetpackCompose布局的使用详细介绍
    目录一.标准布局组件二.修饰符三.滑动组件1.ScrollableRow和ScrollableColumn2.LazyRowFor和LazyColumnFor一.标准布局组件 Com...
    99+
    2022-11-13
  • html5响应式布局的详细介绍
    本篇内容主要讲解“html5响应式布局的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5响应式布局的详细介绍”吧!一、什么是响应式布局 ...
    99+
    2022-10-19
  • Java对象的内存布局详细介绍
    目录一、对象头1)、Mark Word2)、类型指针3)、数组长度(只有数组对象才有)二、实例数据三、对齐填充四、使用JOL工具分析对象内存布局在HotSpot虚拟机中,对象在内存中...
    99+
    2023-02-13
    Java对象内存布局 Java内存布局 Java对象内存
  • Android 布局控件之LinearLayout详细介绍
    LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失...
    99+
    2022-06-06
    布局 Android
  • Android中卡顿优化布局详细介绍
    目录背景实践过程如何渲染界面什么是过度绘制如何查看绘制维度界面优化硬件加速原理总结背景 在当下移动互联网后半场,手机已经是人手必备的设备。App是离用户最近的应用,界面又是最直观影响...
    99+
    2022-11-13
  • javascript中全局函数的详细介绍
    本篇内容主要讲解“javascript中全局函数的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中全局函数的详细介绍”吧! ...
    99+
    2022-10-19
  • C++BoostMultiIndex使用详细介绍
    目录一、关于BOOST的容器二、Boost.MultiIndex练习一、关于BOOST的容器 容器是 C++ 中最有用的数据结构之一。标准库提供了许多容器,而 Boost 库提供的更...
    99+
    2022-11-13
    C++ Boost MultiIndex C++ MultiIndex
  • JavaGUI常用三种布局使用介绍
    目录1.流布局FlowLayout2.边界布局BorderLayout3.网格布局管理器GridLayout1.流布局FlowLayout 所有组件像流一样,一个一个排放,排满了一...
    99+
    2023-03-03
    JavaGUI 常用布局 JavaGUI布局
  • 详细介绍Github的使用方法
    随着互联网技术的不断发展,越来越多的开发者开始加入到开源项目中,Github作为目前全球最大的代码托管平台之一,也成为了开发者们分享、学习、合作的重要工具之一。然而,如何使用Github来进行代码管理、版本控制、协作开发等,还是很多新手开发...
    99+
    2023-10-22
  • Java中ArrayList的使用详细介绍
    目录1.ArrayList类1.1ArrayList类概述1.2ArrayList类常用方法1.2.1构造方法1.2.2成员方法1.2.3示例代码1.3ArrayList存储字符串并...
    99+
    2022-11-13
  • TypeScript泛型的使用详细介绍
    目录情景再现使用泛型泛型类型泛型接口泛型类泛型约束在泛型里使用类类型[]高级案例情景再现 这里针对一种情况,也是非常常见的一种情况:那就是 function identity(arg...
    99+
    2022-11-13
  • Java反射使用的详细介绍
    文章目录 反射反射基本介绍反射获取类对象反射获取构造器对象反射获取成员变量对象反射获取方法对象 反射 反射基本介绍 反射概述: 反射认为类的每一个成份都是一个对象, 对于任何一个Class类,在"运行的时候"都可以直接得...
    99+
    2023-08-20
    java jvm 开发语言
  • AndroidConstraintLayout约束布局使用实例介绍
    目录基本结构导入 compose 约束布局包约束布局使用步骤 继续约束参考线约束解耦约束集合解耦调用基本结构 约束结构原理:将一个组件与约束布局关联后,通过 modifie...
    99+
    2022-11-13
  • fastjson 使用方法详细介绍
    Fastjson介绍Fastjson是一个Java语言编写的JSON处理器。遵循http://json.org标准,为其官方网站收录的参考实现之一。功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、M...
    99+
    2023-05-30
    fastjson 使用
  • ReentrantLock介绍及使用(超详细)
    点击 Mr.绵羊的知识星球 解锁更多优质文章。 目录 一、介绍 1. 简介 2. 是什么类型的锁 3. 优点 4. 原理 5. 主要方法 6. 使用时注意事项 二、实际应用 1. 案例一 2. 案例二 一、介绍 1. 简介     ...
    99+
    2023-09-20
    java 开发语言
  • TypeScript泛型使用详细介绍
    目录1 什么是泛型2 泛型方法3 泛型类4 泛型接口1 什么是泛型 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别...
    99+
    2022-11-13
    TypeScript泛型 TypeScript泛型使用方法
  • 巧用Redis实现分布式锁详细介绍
    目录前言手写Redis分布式锁Redissonlock()lock(long leaseTime, TimeUnit unit)tryLock(long waitTime, long...
    99+
    2022-11-12
  • 使用 docker 部署 APISIX的详细介绍
    二话不说,上个 docker-compose.yml 为敬! version: "3" services: apisix-dashboard: image: apache...
    99+
    2022-11-13
  • Android 模拟器的使用详细介绍
    让我们一起学习一下模拟器的使用。 本文内容如下: 模拟器和真机的比较 创建Android模拟器(emulator) 运行Android模拟器 设置简体中文语...
    99+
    2022-06-06
    模拟器 Android
  • Yarn的安装与使用详细介绍
    在官方介绍里有这么一句话: Yarn is a package manager for your code. It allows you to use and share code with other d...
    99+
    2022-06-04
    详细介绍 Yarn
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作