百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

七爪源码:面向视图开发人员的 Jetpack Compose—LinearLayout

yuyutoo 2024-10-19 11:08 13 浏览 0 评论

在 Views 中,LinearLayout 用于线性布局视图?—?水平或垂直。 那么在compose中LinearLayout的等价物是什么?

基本上在 Jetpack Compose 中,我们使用行/列组合来实现相同的结果。 那么让我们开始吧……

提示:如果你赶时间,你可以看看代码片段和图片,你就会明白整个事情......


1. 安卓:方向

在 LinearLayout 中,您可以使用 android:orientation=”horizontal|vertical” 属性来定义其子项的方向,在 Compose 中,我们使用 android:orientation=”horizontal” 的 Row 和 android:orientation=”vertical” 的 Column 组成 达到相同的结果。

这是代码...

@Composable
fun TheAwesomeColumn() {
    Column(modifier = Modifier.padding(16.dp)) {
        RedBox()

        Spacer(modifier = Modifier.height(16.dp))

        OrangeBox()

        Spacer(modifier = Modifier.height(16.dp))

        GreenBox()
    }
}

而对于行...

@Composable
fun TheCuteRow() {
    Row(Modifier.padding(16.dp)) {
        RedBox()

        Spacer(modifier = Modifier.width(16.dp))

        OrangeBox()

        Spacer(modifier = Modifier.width(16.dp))

        GreenBox()
    }
}

结果…

2.安卓:重力

指定对象应如何定位其内容 android:gravity="end|center|..." 在 compose 中,我们可以在这里使用 Column 的 HorizontalAlignment 和 VerticalArrangement 参数以及 Row 的 verticalAlignment 和 HorizontalArrangement 参数。

Column(
    verticalArrangement = Arrangement.Bottom,
    horizontalAlignment = Alignment.CenterHorizontally,
    modifier = Modifier.fillMaxSize()
)

注意:您可以使用Modifier.fillMaxSize() 设置任何组合高度和宽度match_parent,或者您可以使用fillMaxHeight() 仅设置高度,使用fillMaxWidth() 设置宽度。

Row(
    horizontalArrangement = Arrangement.Center,
    verticalAlignment = Alignment.CenterVertically,
    modifier = Modifier.fillMaxSize()
)

结果…。

您还可以使用horizontalAlignment 并顺便说一下行与列相同,但您现在是水平的:)。


3. android:layout_gravity

如果你想让一个子级覆盖它的父级重力,你可以使用 Row 的 align 和 Column 的 align 修饰符来完成这项工作。 例如:

Column(
    modifier = Modifier.padding(16.dp).fillMaxSize(),
    horizontalAlignment = Alignment.Start
) {
    RedBox() // this will be like parent Alignment.Start

    Spacer(modifier = Modifier.height(16.dp))
    //this will override it's parent to CenterHorizontally
    OrangeBox(Modifier.align(Alignment.CenterHorizontally))    Spacer(modifier = Modifier.height(16.dp))

    GreenBox()
}

4. 安卓:重量

为了创建一个布局,其中每个孩子使用相同数量的空间或在屏幕上按特定比例划分空间,我们将属性设置为行的填充宽度和列的高度。 例如:

Row(
    modifier = Modifier
        .padding(16.dp)
        .fillMaxWidth()
) {
    Text(text = "Cash", modifier = Modifier.weight(1f).background(Color.Cyan))
    Spacer(modifier = Modifier.width(16.dp))
    Text(text = "Credit Card", modifier = Modifier.weight(1f).background(Color.Blue))
}

我知道,用户界面看起来很糟糕,但你明白了……

注意:您可以给它任何您想要为 ex 创建动态布局的比例:一个为 2f,另一个为 1f。

另一个注意事项:Wight 函数具有填充参数 weight(..., fill = true) ,

fill = true 是默认值,它在可用空间中的作用类似于 match_parent

fill = false 将像可用空间中的 wrap_content 一样。


5. 展开一个孩子

如果您想让孩子填满所有可用空间怎么办? 例如:

这是你如何做到的……

Row(
        verticalAlignment = Alignment.CenterVertically,
        modifier = Modifier.fillMaxWidth()
    ) {
        LeftChild(...)
        Spacer(...)

        // The expanded child goes here
        MiddleChild(
            modifier = Modifier
                .weight(1f) // here is the magic
                .wrapContentWidth(Alignment.Start), // here is the magic
        )

        Spacer(...)
        RightChild(...)
    }

在这里 MiddleChild 将占用所有可用空间并将 RightChild 推到边缘......

注意:您可以对列执行相同的操作。

最后给你一个小提示:默认情况下,行/列不可滚动,但我们可以通过添加修饰符轻松使它们可滚动……

Row(modifier = Modifier.horizontalScroll(rememberScrollState()))
/Column(modifier = Modifier.verticalScroll(rememberScrollState()))

相关推荐

高一高二第一次月考认真作答(高二第一次月考的重要性)

正在进行高一、高二第一次月考,同学们正在认真完成化学试卷,研究考纲,探究考点,夯实基础,迎战高考!

山清水秀,盛世今朝(山清水秀出处)

万千星河,神州妖娆!山清水秀,盛世今朝!龙腾虎跃,锦绣前程!千里婵娟,祝福永远!

我校二模成绩已新鲜出炉(二模考试成绩)

充电加油备战高考,积极努力再拼一搏...

Argon Design向瑞萨电子有限公司提供Argon Streams VP9许可证

英国剑桥--(美国商业资讯)--领先的先进视频验证解决方案提供商ArgonDesignLtd已与日本半导体公司瑞萨电子有限公司(RenesasElectronicsCorporation)签署...

高考倒计时75天(高考倒计时75天励志语)

今天是2022年3月24日星期四,距离2022年高考还有75天时间对于十八岁的高三学子来说,有些事情的确会影响你们的一生,但是没有一件事能决定你们的一生!努力的意义,就是:以后的日子里,放眼望去,全...

期中考试正在进行(期中考试在即)

转眼即瞬,期中考试已到,紧张忙碌的两个月学习,检验的时刻到了。让我们拿出信心和勇气,来挑战自我。面对考验,我们该做的就是沉着,冷静。让知识来一次次洗礼我们的灵魂,让失败和成功迎接一次次的成长。你们可以...

不要浪费了你NAS上的HDMI接口!详解华硕NAS上HDMI接口的妙用

不要浪费了你NAS上的HDMI接口!详解华硕NAS上HDMI接口的妙用之前我在本站分享我使用的华硕(ASUS)AS6704T...

Java通过Kafka Streams库来实现数据流处理

#暑期创作大赛#...

From abandoned mines to limpid streams waters: how banks profit from EOD

ByZENGYanglinInthecurrentpursuitofthe“dualcarbon”target(carbonpeakingandcarbonneutra...

SPSS与Streams的集成实现实时预测

SPSSModeler是一个数据挖掘工作台,提供了一个可了解数据并生成预测模型的最先进的环境。Streams提供了一个可伸缩的高性能环境,对不断变化的数据进行实时分析,这些数据中包括传统结构的数据...

Kafka Streams, 我还会再使用它吗?

DeeptiMittal4分钟阅读...

大数据Hadoop之——Kafka Streams原理介绍与简单应用示例

一、KafkaStreams概述官网文档:https://kafka.apache.org/32/documentation/streams/...

Android上的TCP今天开始向用户推出,并将在下个月向所有用户提供

据extends网3月15日报道,Firefox今天宣布,其保护用户免受跟踪器攻击的全面cookie保护(TCP)功能现已在Android上可用。该功能默认启动模式,这样,跟踪器将无法收集有关用户的浏...

Linux curl命令(linux curl命令安装)

Linuxcurl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、H...

go语言http服务入门详解(go语言http服务器)

当你在浏览器中输入URL时,实际上是在发送一个对Web页面的请求。该请求被发送到服务器。服务器的工作是获取适当的页面并将其作为响应发送回浏览器。在Web的早期,服务器通常读取服务器硬盘上HTML文件的...

取消回复欢迎 发表评论: