首页 > 其他分享 >Android开发系列(六)Jetpack Compose之Box

Android开发系列(六)Jetpack Compose之Box

时间:2024-06-21 22:31:32浏览次数:22  
标签:Box Compose 示例 Color Jetpack background Modifier dp

    Box是一个用来组合和控制子元素布局的组件。它可以在一个矩形区域内排列一个或多个子元素,并根据所提供的参数来控制它们的位置、大小和样式。

   Box的功能类似传统的FrameLayout。

   下面通过示例了解Box的使用方法,首先看一个最简单的示例,如下所示

    这里定义两个Box,是一对父子关系。父Box的大小为整个屏幕的大小,子Box是一个正方向,边长为100dp。

   由于父Box将contentAlignment设置为Center,也就是内容为中间对齐,因此子Box显示在中间。

   Box可以设置子控件的对齐方式,子控件也可以设置它在Box中的对齐方式,如下所示。


@Composable
fun BoxSample() {
    Box {
        Box(Modifier.fillMaxSize().background(Color.Cyan))
        Box(
            Modifier.matchParentSize()
                .padding(top = 20.dp, bottom = 20.dp)
                .background(Color.Yellow)
        )
        Box(
            Modifier.matchParentSize()
                .padding(40.dp)
                .background(Color.Magenta)
        )
        Box(
            Modifier.align(Alignment.Center)
                .size(300.dp, 300.dp)
                .background(Color.Green)
        )
        Box(
            Modifier.align(Alignment.TopStart)
                .size(150.dp, 150.dp)
                .background(Color.Red)
        )
        Box(
            Modifier.align(Alignment.BottomEnd)
                .size(150.dp, 150.dp)
                .background(Color.Blue)
        )
    }

}

    该示例的效果如下图所示。

   从该实例可以看到,在子Box也可以通过修改align显示在Box中的不同位置。

BoxWithConstraints

    

BoxWithConstraints 是 Jetpack Compose 中的一个组件,用于根据父容器的尺寸限制来调整自身的尺寸和布局。

BoxWithConstraints 可以接收一个 lambda 表达式,lambda 表达式中可以根据父容器的尺寸限制来设置子组件的尺寸和布局。比如,可以在 lambda 表达式中使用 ConstraintLayout 来实现复杂的布局。

使用 BoxWithConstraints 组件的一个常见用例是根据屏幕的尺寸限制来调整界面的布局。比如,在移动设备上,可以根据屏幕的宽度和高度来自动调整界面的布局。

 下面通过示例说明BoxWithConstraints的用法,分以下2种情况。

1、最大高度小于长方形高度的两边

    由于最大高度为180,长方形高度为100,180 < 100 *2,因此走第1个分支,只显示1个Box。

2、最大高度大于长方形高度的2倍

由于最大高度为220,长方形高度为100,220 > 100 *2,因此走第2个分支,显示2个Box。

示例代码已上传到github,地址如下

示例代码工程地址 

标签:Box,Compose,示例,Color,Jetpack,background,Modifier,dp
From: https://blog.csdn.net/leesino/article/details/139792023

相关文章

  • fyne的VBox布局
    fyne的VBox布局最常用的布局是layout.BoxLayout,它有两种变体,水平和垂直。box布局将所有元素排列在单行或单列中,并带有可选的空格以帮助对齐。一步一步实现一个如下界面布局,这个界面可以使用VBox布局来实现。代码1packagemainimport( "fyne.io/fyne/v2" "fyne.io/......
  • CentOS 7 安装 docker-compose
    在CentOS7上配置docker-compose需要几个步骤。以下是详细步骤:1、安装DockerCompose:DockerCompose的官方推荐安装方式是使用pip(Python的包管理工具)。但是,首先你需要确保你的系统上安装了Python和pip。使用以下命令安装pip(如果你还没有安装的话):sudoyuminst......
  • QT/QMessageBox/QTimerEvent/使用定时器制作一个闹钟
    1.使用定时器制作一个闹钟代码:widget.cpp:#include"widget.h"#include"ui_widget.h"Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget),speecher(newQTextToSpeech(this))//给语音对象申请空间{ui->setupUi(this);......
  • 【winform】ListBox如何给item项添加hover
    1、绑定move事件listBox1.MouseMove+=newMouseEventHandler(listBox_MouseMove);2、编写代码privatevoidlistBox_MouseMove(object?sender,MouseEventArgse){ListBox?listBox=senderasListBox;//获取鼠标在ListBox中的位置int......
  • 鸿蒙ArkTS声明式组件:【Checkbox】
    Checkbox提供多选框组件,通常用于某选项的打开或关闭。说明:该组件从APIVersion8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。子组件无接口Checkbox(options?: {name?:string,group?:string})从APIversion9开始,该接口支持在ArkT......
  • 鸿蒙ArkTS声明式组件:【CheckboxGroup】
    CheckboxGroup多选框群组,用于控制多选框全选或者不全选状态。说明:该组件从APIVersion8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。子组件无接口CheckboxGroup(options?:{group?:string})创建多选框群组,可以控制群组内的Checkbox......
  • MFC---列表框控件ListBox、组合框控件Combo Box(常用控件)
    前面两节讲了比较常用的按钮控件,并通过按钮控件实例说明了具体用法。本文要讲的是列表框控件(ListBox)及其使用实例。列表框控件简介列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选中的项会高亮显示。列表框可分为单选列表框和多选列表框,顾名思义,单选列表框中......
  • 养猪大户必备!教你用ModelBox开发一个AI数猪应用
    本文分享自华为云社区《ModelBox-视频应用开发:AI智能数猪【玩转华为云】》,作者:阳光大猫。一、准备环境ModelBox端云协同AI开发套件(Windows)环境准备【ModelArts+ModelBox端云协同AI应用开发实训课程】二、应用开发1.创建工程在ModelBox sdk目录下使用create.bat创建yolov7......
  • VirtualBox Ubuntu 22.04 Server联网、与主机互联
    使用VirtualBox7.0安装了两个Ubuntu22.04Server虚拟机,想要实现:主机与虚拟机互联虚拟机之间互联,且互联的IP应为静态虚拟机可以联网解决方法每个虚拟机配置两个虚拟网卡:一个为桥接网络模式,用于联网以及与主机互联一个为仅主机模式,用于配置静态IP并实现虚拟机之间互联......
  • docker-compose安装部署
    docker-compose的安装:主要是下载docker-compose文件1、下载docker-compose:https://github.com/docker/compose/releases/tag/v2.20.2(选择docker-compose-linux-x86_64)2、部署docker-compose:·为了在所有目录下都可以使用此命令,将下载的docker-compose文件拷......