【Android、IOS、Flutter、鸿蒙、ReactNative 】约束布局

Android XML 约束布局 参考

TextView居中

TextView 垂直居中并且靠右 

TextView 宽高设置百分比 

宽和高的比例

app:layout_constraintDimensionRatio="h,2:1" 表示子视图的宽高比为2:1,其中 h表示保持宽度不变,高度自动调整。

最大宽度 

设置最大宽度,超过这个宽度就会发生换行。

Android Compose 约束布局

导入依赖包

 启用Compose

Compose Text居中

//Compose  Text居中
    @Preview
    @Composable
    fun ConstraintLayoutCompose() {
        ConstraintLayout(modifier = Modifier.fillMaxSize()) {
            val (text) = createRefs()
            Text(
                text = "Text 居中",
                modifier = Modifier
                    .width(180.dp)// 宽度
                    .height(200.dp)// 高度
                    .background(color = Color.Cyan)
                    .constrainAs(text) {
                        start.linkTo(parent.start)//位于父视图开始
                        end.linkTo(parent.end)//位于父视图结束
                        top.linkTo(parent.top)//位于父视图顶部
                        bottom.linkTo(parent.bottom)//位于父视图底部
                    },
                textAlign = TextAlign.Center,
            )
        }
    }

 Compose Text 垂直居中并且靠右

// Compose Text 垂直居中并且靠右
    @Preview
    @Composable
    fun ConstraintLayoutCompose() {
        ConstraintLayout(modifier = Modifier.fillMaxSize()) {
            val (text) = createRefs()
            Text(
                text = "Text 居中",
                modifier = Modifier
                    .width(180.dp)// 宽度
                    .height(200.dp)// 高度
                    .background(color = Color.Cyan)
                    .constrainAs(text) {
                        end.linkTo(parent.end)//位于父视图结束
                        top.linkTo(parent.top)//位于父视图顶部
                        bottom.linkTo(parent.bottom)//位于父视图底部
                    },
                textAlign = TextAlign.Center,
            )
        }
    }

Compose Text 宽高设置百分比 


    // Compose Text 宽高设置百分比
    @Preview
    @Composable
    fun ConstraintLayoutCompose() {
        ConstraintLayout(modifier = Modifier.fillMaxSize()) {
            val (text) = createRefs()
            Text(
                text = "Text 居中",
                modifier = Modifier
                    .background(color = Color.Cyan)
                    .constrainAs(text) {
                        start.linkTo(parent.start) // 位于父视图开始
                        end.linkTo(parent.end)//位于父视图结束
                        top.linkTo(parent.top)//位于父视图顶部
                        bottom.linkTo(parent.bottom)//位于父视图底部
                        // 设置宽度为父视图宽度的50%
                        width = Dimension.percent(0.5F)
                        // 设置高度为父视图宽度的50%
                        height = Dimension.percent(0.5F)
                    },
                textAlign = TextAlign.Center,
            )
        }
    }

 Compose Text 宽和高的比例 2:1

 // Compose Text 宽和高的比例 2:1
    @Preview
    @Composable
    fun ConstraintLayoutCompose() {
        ConstraintLayout(modifier = Modifier.fillMaxSize()) {
            val (text) = createRefs()
            Text(
                text = "Text 居中",
                textAlign = TextAlign.Center,
                modifier = Modifier
                    .background(color = Color.Cyan)
                    .constrainAs(text) {
                        start.linkTo(parent.start) // 位于父视图开始
                        end.linkTo(parent.end)//位于父视图结束
                        top.linkTo(parent.top)//位于父视图顶部
                        bottom.linkTo(parent.bottom)//位于父视图底部
                        // 设置宽度为父视图宽度的100%
                        width = Dimension.percent(1.0f)
                    }
                    .aspectRatio(2.0f)// 宽高比例 2:1

            )
        }
    }

 Compose Text 设置最大宽度

//Compose Text 设置最大宽度
    @Preview
    @Composable
    fun ConstraintLayoutCompose() {
        ConstraintLayout(modifier = Modifier.fillMaxSize()) {
            val (text) = createRefs()
            Text(
                text = "Compose Text 设置最大宽度 Compose Text 设置最大宽度 Compose Text 设置最大宽度 ",
                textAlign = TextAlign.Start,
                modifier = Modifier
                    .background(color = Color.Cyan)
                    .widthIn(max = 160.dp) // 设置最大宽度
                    .constrainAs(text) {
                        start.linkTo(parent.start) // 位于父视图开始
                        end.linkTo(parent.end)//位于父视图结束
                        top.linkTo(parent.top)//位于父视图顶部
                        bottom.linkTo(parent.bottom)//位于父视图底部
                    }
            )
        }
    }

IOS Object-c 约束布局

pod init

如果不存在 Podfile 文件,切换到工程目录,就执行 pod init 命令

pod install

配置 Masonry 依赖 ,然后执行 pod install 命令

编译是遇到的问题  参考

 file not found libarclite_iphonesimulator.a

Podfile 中添加脚本 将Cocopods 引入的库的最低版本改为 iOS 11.0,再次执行 pod install 命令

UITextView 居中 

UITextView 垂直居中并且靠右

 

UITextView 宽和高的比例 2:1

UITextView 最大宽度

 

IOS Swifit 约束布局

pod init

如果不存在 Podfile 文件,切换到工程目录,就执行 pod init 命令

pod install

配置 Masonry 依赖 ,然后执行 pod install 命令

 UITextView 居中

 UITextView 垂直居中并且靠右

UITextView 宽和高的比例 2:1 

UITextView 最大宽度

 

Flutter 约束布局

配置依赖

pubspec.yaml 里面配置 flutter_constraintlayout 依赖

Flutter Text居中

// flutter text 居中显示
  Widget textCenter() {
    return ConstraintLayout(
      children: [
        Container(
          color: Colors.orange,
          alignment: Alignment.center,
          child: const Text('flutter text 居中'),
        ).applyConstraint(
          width: 200.0,
          height: 100.0,
          centerTo: parent, // Text 居中
        )
      ],
    );
  }

Flutter Text 垂直居中靠右显示

 // flutter text 垂直居中靠右显示
  Widget textVerticalCenterToRight() {
    return ConstraintLayout(
      children: [
        Container(
          color: Colors.orange,
          alignment: Alignment.center,
          child: const Text('flutter text 居中'),
        ).applyConstraint(
            width: 200.0, height: 100.0, centerRightTo: parent // 垂直居中 靠右显示
            )
      ],
    );
  }

Flutter Text 宽高设置百分比

// flutter text 宽高设置百分比
Widget textWidthHeightPercent() {
  return ConstraintLayout(
    children: [
      Container(
        color: Colors.orange,
        alignment: Alignment.center,
        child: const Text('flutter text 宽高设置百分比'),
      ).applyConstraint(
          width: matchConstraint,
          height: matchConstraint,
          heightPercent: 0.5,
          widthPercent: 0.5,
          centerTo: parent
      )
    ],
  );
}

Flutter Text 宽和高的比例 2:1

// flutter 宽高比例 2:1
Widget textWidthHeightRatio() {
  return ConstraintLayout(
    children: [
      Container(
        color: Colors.orange,
        alignment: Alignment.center,
        child: const Text('flutter 宽高比例 2:1'),
      ).applyConstraint(
          width: 300,
          height: matchConstraint,
          widthHeightRatio: 2 / 1,
          centerTo: parent)
    ],
  );
}

Flutter 设置最大宽度

// flutter 设置最大宽度
Widget textMaxWidth() {
  return ConstraintLayout(
    children: [
      Container(
        color: Colors.orange,
        alignment: Alignment.center,
        child:
            const Text('flutter 最大宽度 flutter 最大宽度 flutter 最大宽度 flutter 最大宽度'),
      ).applyConstraint(maxWidth: 200, height: 400, centerTo: parent)
    ],
  );
}

鸿蒙 布局 Flexbox

鸿蒙 Text 居中

@Entry
@Component
struct Index {
  build() {
    // 鸿蒙 Text 居中
    Flex({ alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Text('鸿蒙 Text 居中').width('50%').height(80)
        .textAlign(TextAlign.Center)
        .backgroundColor(0xF5DEB3)

    }.width('100%').height('100%').backgroundColor(0xFFFFFFFF)
  }
}

 鸿蒙 Text 垂直居中靠右

@Entry
@Component
struct Index {
  build() {
    // 鸿蒙 Text 垂直居中靠右
    Flex({
      alignItems: ItemAlign.Center, //垂直居中
      justifyContent: FlexAlign.End //水平靠右
    }) {
      Text('鸿蒙 Text 居中').width('50%').height(80)
        .textAlign(TextAlign.Center)
        .backgroundColor(0xF5DEB3)

    }.width('100%').height('100%').backgroundColor(0xFFFFFFFF)
  }
}

 鸿蒙 宽和高的比例 2:1

@Entry
@Component
struct Index {
  build() {
    // 鸿蒙 宽和高的比例 2:1
    Flex({
      alignItems: ItemAlign.Center, //垂直居中
      justifyContent: FlexAlign.End //水平靠右
    }) {
      Text('鸿蒙 宽和高的比例 2:1').width('100%')
        .aspectRatio(2) //宽高比例 2:1
        .textAlign(TextAlign.Center)
        .backgroundColor(0xF5DEB3)

    }.width('100%').height('100%').backgroundColor(0xFFFFFFFF)
  }
}

 鸿蒙 Text 设置最大宽度

@Entry
@Component
struct Index {
  build() {
    // 鸿蒙 最大宽度
    Flex({
      alignItems: ItemAlign.Center, //垂直居中
      justifyContent: FlexAlign.Center //水平居中
    }) {
      Text('鸿蒙 最大宽度 鸿蒙 最大宽度 鸿蒙 最大宽度 鸿蒙 最大宽度')
        .constraintSize({
          maxWidth: 160 //最大宽度
        })
        .textAlign(TextAlign.Center)
        .backgroundColor(0xF5DEB3)

    }.width('100%').height('100%').backgroundColor(0xFFFFFFFF)
  }
}

ReactNative Flexbox

ReactNative Text 居中

import React from 'react';
import {AppRegistry,View,Text } from 'react-native';
import App from './App';
import {name as appName} from './app.json';

const CenteredText = () => (
  <View style={{
        flex: 1,
        justifyContent: 'center',//内容垂直居中
        alignItems: 'center' // 内容水平居中
        }}>
    <Text style={{
        backgroundColor: '#6200EE', // 背景颜色
        height:60.0, //高度
        width: '80%', // 宽度
        textAlign: 'center', // 文本水平居中
        color: '#ffffff', // 文本颜色
        textAlignVertical: 'center',//文本垂直居中
        }}>
        React Native 居中文本
    </Text>
  </View>
);

AppRegistry.registerComponent(appName, () => CenteredText);

 

执行 npm install 安装项目所需要的依赖

运行到安卓

采用 npx react-native run-android 或 npm start 运行

 

运行到IOS平台

采用 npx react-native run-ios 或 npm start 运行

 切换到iOS目录从新安装依赖 

// 清除缓存
pod cache clean  --all
 
//移出本地 pod文件依赖
pod  deintegrate
 
//执行安装显示下载信息
pod install --verbose --no-repo-update

 

ReactNative Text 垂直居中并且靠右

import React from 'react';
import {AppRegistry,View,Text } from 'react-native';
import App from './App';
import {name as appName} from './app.json';

const CenteredText = () => (
  <View style={{
        flex: 1,
        justifyContent: 'center',//内容垂直居中
        alignItems: 'flex-end' // 内容居右
        }}>
    <Text style={{
        backgroundColor: '#6200EE', // 背景颜色
        height:60.0, //高度
        width: '80%', // 宽度
        textAlign: 'center', // 文本水平居中
        color: '#ffffff', // 文本颜色
        textAlignVertical: 'center',//文本垂直居中
        }}>
        React Native 居中文本
    </Text>
  </View>
);

AppRegistry.registerComponent(appName, () => CenteredText);

ReactNative Text 宽和高的比例 2:1

import React from 'react';
import {AppRegistry,View,Text } from 'react-native';
import App from './App';
import {name as appName} from './app.json';

const CenteredText = () => (
  <View style={{
        flex: 1,
        justifyContent: 'center',//内容垂直居中
        alignItems: 'center' // 内容水平居中
        }}>
    <Text style={{
        backgroundColor: '#6200EE', // 背景颜色
        width: '80%', // 宽度
        textAlign: 'center', // 文本水平居中
        color: '#ffffff', // 文本颜色
        textAlignVertical: 'center',//文本垂直居中
        aspectRatio: 2, // 宽高比为2:1
        }}>
        ReactNative Text 宽和高的比例 2:1
    </Text>
  </View>
);

AppRegistry.registerComponent(appName, () => CenteredText);

ReactNative Text 最大宽度

import React from 'react';
import {AppRegistry,View,Text } from 'react-native';
import App from './App';
import {name as appName} from './app.json';

const CenteredText = () => (
  <View style={{
        flex: 1,
        justifyContent: 'center',//内容垂直居中
        alignItems: 'center' // 内容水平居中
        }}>
    <Text style={{
        backgroundColor: '#6200EE', // 背景颜色
        maxWidth: '50%', // 最大宽度
        textAlign: 'center', // 文本水平居中
        color: '#ffffff', // 文本颜色
        textAlignVertical: 'center',//文本垂直居中
        }}>
        ReactNative Text 最大宽度 ReactNative Text 最大宽度 ReactNative Text 最大宽度
    </Text>
  </View>
);

AppRegistry.registerComponent(appName, () => CenteredText);

案例

所属分支

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用HTML、CSS和JavaScript创建动态圣诞树

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 ✨特色专栏&#xff1a…

golang分布式缓存项目 Day1 LRU 缓存淘汰策略

注&#xff1a;该项目原作者&#xff1a;https://geektutu.com/post/geecache-day1.html。本文旨在记录本人做该项目时的一些疑惑解答以及部分的测试样例以便于本人复习。 LRU缓存淘汰策略 三种缓存淘汰策略 FIFO&#xff08;First In, First Out&#xff09;先进先出 原理&…

面向对象的需求分析和设计(一)

[toc] 1. 引言 前一篇文章《我对需求分析的理解》提到了面向对象分析和设计&#xff0c;正好最近又重新有重点的读了谭云杰著的《Think in UML》&#xff0c;感觉有必要写把书中一些核心内容观点以及自己的想法整理出来&#xff0c;一是方便自己日后的复习&#xff0c;另外也…

php中ajax怎么使用【小白专用24.11.12】

在PHP中&#xff0c;使用Ajax可以实现页面异步加载和动态数据交互。下面是使用Ajax的基本方法&#xff1a; <?php // ajax_endpoint.php// 处理请求&#xff0c;并返回JSON格式的响应 $responseData array(message > Hello from PHP!); header(Content-Type: applicati…

【css】html里面的图片宽度设为百分比,高度要与宽度一样

场景&#xff1a;展示图片列表的时候&#xff0c;原始图片宽高不一致。 外层div的宽度自适应&#xff0c;图片宽度不能固定数值&#xff0c;只能设置百分比。图片高度也不能设置固定数值。 如何让图片的高度与图片的宽度一样呢&#xff1f; html代码 &#xff1a; <div cl…

开源项目推荐——OpenDroneMap无人机影像数据处理

实景三维作为GIS最火的课题&#xff0c;最近在想做一套自己的三维构建工具&#xff0c;考察了几个开源项目&#xff0c;把自己的搜索过程用csdn记录下来&#xff0c;希望也能帮助到各位同仁。 OpenDroneMap&#xff08;ODM&#xff09;是一个开源项目&#xff0c;旨在处理无人…

快速提升ROI,收藏这份Facebook广告投放技巧!

Facebook广告在海外数字营销中占据重要地位。据统计&#xff0c;约有 700 万广告商活跃在该平台上&#xff0c;购买力不容小觑。 然而&#xff0c;当前 Facebook 广告竞争激烈&#xff0c;导致广告位供不应求&#xff0c;成本上升&#xff0c;尤其是在下半年营销旺季中&#xf…

C++提高编程-泛型编程

一、模板&#xff1a; 1.1.模板的概念: 1.模板就是建立通用的模具&#xff0c;大大提高复用性2.例如生活中的模板: 一寸照片模板&#xff1a; PPT模板&#xff1a; 模板的特点&#xff1a; 模板不可以直接使用&#xff0c;它只是一个框架模板的通用并不是万能的 二、泛型编…

漫谈分布式唯一ID

文章目录 本系列前言UUIDDB自增主键Redis incr命令号段模式雪花算法 本系列 漫谈分布式唯一ID&#xff08;本文&#xff09;分布式唯一ID生成&#xff08;二&#xff09;&#xff1a;leaf分布式唯一ID生成&#xff08;三&#xff09;&#xff1a;uid-generator分布式唯一ID生成…

大语言模型LLMs在医学领域的最新进展总结

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 相比其他学科&#xff0c;医学AI&#xff0c;是发表学术成果最多的领域。 医学数据的多样性和复杂性&#xff08;包括文本、图像、基因组数据等&#xff09;&#xff0c;使得…

Vue 学习随笔系列十四 -- JavaScript巧妙用法

JavaScript巧妙用法 文章目录 JavaScript巧妙用法1、String.padStart 函数2、String.padEnd 函数3、tirm 函数3. Object.freeze 函数4. Object.fromEntries 函数5. Object.entries 函数6. Array.prototype.flat 函数 1、String.padStart 函数 在字符串前面进行填充 let temp …

【PGCCC】Postgresql 物理流复制

postgresql 提供了主从复制功能&#xff0c;有基于文件的拷贝和基于 tcp 流的数据传输两种方式。两种方式都是传输 wal 数据&#xff0c;前者是等待生成一个完整的wal文件后&#xff0c;才会触发传输&#xff0c;后者是实时传输的。可以看出来基于文件方式的延迟会比较高&#…

每日小练:Day2

1.乒乓球筐 题目链接&#xff1a;乒乓球筐__牛客网 题目描述&#xff1a; 这道题主要考察B盒是不是A盒的子集&#xff0c;我们可以通过哈希表来做 单哈希表 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public stat…

esp32学习:如何解决OV5640摄像头发热问题

我们在使用esp开发板过程中&#xff0c;连接ov2640摄像头时&#xff0c;非常正常&#xff0c;但连接ov5640摄像头时&#xff0c;会发现摄像头发烫&#xff0c;非常热&#xff0c;我们网上找解决方案&#xff0c;基本都是加散热片&#xff0c;没有根本解决问题。 前段时间&#…

JQuery封装的ajax

1. 注意&#xff1a; 首先要导jq的包json对象可以用 . 来调用keyjava只能给前端传页面&#xff0c;或者打印的内容String jsonstr json.toJSONString(resultJSON); //将对象转为JSON对象 Json格式和参数解释&#xff1a; <script src"js/jquery-1.10.2.min.js&quo…

【计算机网络】章节 知识点总结

一、计算机网络概述 1. 计算机网络向用户提供的两个最重要的功能&#xff1a;连通性、共享 2. 因特网发展的三个阶段&#xff1a; 第一阶段&#xff1a;从单个网络 ARPANET 向互联网发展的过程。1983 年 TCP/IP 协议成为 ARPANET 上的标准协议。第二阶段&#xff1a;建成三级…

Python+robotframework接口自动化测试实操(超详细总结)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出&#xff0c;通过关键字的封装实现一定意义上的脚本与用例的脱离&#xff01; robot framework 的…

如何管理好自己的LabVIEW项目

在LabVIEW项目开发中&#xff0c;项目管理对于提高开发效率、确保项目质量、减少错误和维护成本至关重要。以下从项目规划、代码管理、测试与调试、版本控制、团队协作等方面&#xff0c;分享LabVIEW项目管理的体会。 ​ 1. 项目规划与需求分析 关键步骤&#xff1a; 需求分析…

【快速解决】kafka崩了,重启之后,想继续消费,怎么做?

目录 一、怎么寻找我们关心的主题在崩溃之前消费到了哪里&#xff1f; 1、一个问题&#xff1a; 2、查看消费者消费主题__consumer_offsets 3、一个重要前提&#xff1a;消费时要提交offset 二、指定 Offset 消费 假如遇到kafka崩了&#xff0c;你重启kafka之后&#xff0…

matlab建模入门指导

本文以水池中鸡蛋温度随时间的变化为切入点&#xff0c;对其进行数学建模并进行MATLAB求解&#xff0c;以更为通俗地进行数学建模问题入门指导。 一、问题简述 一个煮熟的鸡蛋有98摄氏度&#xff0c;将它放在18摄氏度的水池中&#xff0c;五分钟后鸡蛋的温度为38摄氏度&#x…