Android移动应用开发指南之六种布局详解


Posted in Java/Android onSeptember 23, 2022

LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:dividerPadding="200dp"
    >

    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="0dp"
        android:background="#ff0000"
        android:layout_weight="1"
        />
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#ff000000"
        />
    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="0dp"
        android:background="#ffff00"
        android:layout_weight="1"
        />

    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="00dp"
        android:layout_weight="1"
        android:background="#00ffff" />
</LinearLayout>

orientation设置排列方式

layout_weight设置权重(感觉和弹性盒子差不多)

Android移动应用开发指南之六种布局详解

RelativeLayout

顾名思义,相对元素布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:padding="10dp"
    >
    <RelativeLayout
        android:id="@+id/rl1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#ff0000"
        android:layout_centerInParent="true"
        />
    <RelativeLayout
        android:layout_margin="0dp"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#00ff00"
        android:layout_toLeftOf="@+id/rl1"
        />

</RelativeLayout>

Android移动应用开发指南之六种布局详解

FrameLayout

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <FrameLayout
        android:layout_width="400dp"
        android:layout_height="400dp"
        android:background="#ff0000"
        />
    <FrameLayout
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:background="#ffff00"
        android:foreground="@drawable/a"
        />

    <FrameLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="#00ff00"/>

</FrameLayout>

Android移动应用开发指南之六种布局详解

简单来说,就是可以叠一起的布局

TableLayout

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:collapseColumns=""

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第1个"
        />
    <TableRow>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一个"
            />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第二个"
            />
    </TableRow>

    <TableRow>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第一个"
            />
    </TableRow>

</TableLayout>

Android移动应用开发指南之六种布局详解

可以看成类似excel的表格一样的布局

通常结合< TableRow >一起使用

GridLayout

网格布局

<?xml version="1.0" encoding="utf-8"?>
<GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:columnCount="3"
    >
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_row="0"
        android:layout_column="1"
        android:text="第一个"
        />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第二个"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第三个"
        android:layout_columnSpan="3"
        />
</GridLayout>

Android移动应用开发指南之六种布局详解

可以看成TableLayout升级版?

ConstraintLayout

约束布局

这个应该是最强的布局了

创建布局默认的就是这个了。

Android移动应用开发指南之六种布局详解

打开design模式,然后随便拖几个按钮进去

Android移动应用开发指南之六种布局详解

点击魔术棒建立约束。

ok完成布局了。

代码也自动生成好了:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="246dp"
        android:layout_marginTop="107dp"
        android:text="按钮"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="172dp"
        android:layout_marginBottom="125dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="115dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

我们开个虚拟机运行一下:

Android移动应用开发指南之六种布局详解

只能说,差不太多,微调一下差不多就能用了。

也能够设置各个组件的属性值颜色字体等等。

这用起来就像是墨刀一样。

参考

https://www.bilibili.com/video/BV1Jb4y187C4/?p=25&spm_id_from=pageDriver&vd_source=f57738ab6bbbbd5fe07aae2e1fa1280f

总结

到此这篇关于Android移动应用开发指南之六种布局的文章就介绍到这了,更多相关Android移动应用开发布局内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
Java用自带的Image IO给图片添加水印
Jun 15 Java/Android
Java各种比较对象的方式的对比总结
Jun 20 Java/Android
Java基础之线程锁相关知识总结
Jun 30 Java/Android
swagger如何返回map字段注释
Jul 03 Java/Android
idea 在springboot中使用lombok插件的方法
Aug 02 Java/Android
详解JAVA的控制语句
Nov 11 Java/Android
Java实现二分搜索树的示例代码
Mar 17 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
Apr 08 Java/Android
Spring Boot配合PageHelper优化大表查询数据分页
Apr 20 Java/Android
Android存储中最基本的文件存储方式
Apr 30 Java/Android
java版 联机五子棋游戏
May 04 Java/Android
SpringBoot详解执行过程
Jul 15 Java/Android
Java中的Kafka为什么性能这么快及4大核心详析
Mybatis 一级缓存和二级缓存原理区别
Sep 23 #Java/Android
Java实现贪吃蛇游戏的示例代码
Sep 23 #Java/Android
Java获取字符串编码格式实现思路
Sep 23 #Java/Android
java获取一个文本文件的编码(格式)信息
Sep 23 #Java/Android
JDK8中String的intern()方法实例详细解读
Sep 23 #Java/Android
Spring boot实现上传文件到本地服务器
Aug 14 #Java/Android
You might like
十大“创意”战术!
2020/03/04 星际争霸
PDO的安全处理与事物处理方法
2016/10/31 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
vue mounted组件的使用
2018/06/18 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 jQuery
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
django使用xlwt导出excel文件实例代码
2018/02/06 Python
使用python 3实现发送邮件功能
2018/06/15 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
pycharm修改file type方式
2019/11/19 Python
python实现人脸签到系统
2020/04/13 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
python利用opencv实现颜色检测
2021/02/23 Python
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
大学生村官心得体会范文
2014/01/04 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
如何在Python中妥善使用进度条详解
2022/04/05 Python
青岛市的收音机研制与生产
2022/04/07 无线电