Kotlin 开发Android app(九):Android两大布局LinearLayout和RelativeLayout

news2024/10/6 22:34:17

Kotlin 的基本特性就先写到这里,我们这个系列的定位是基础,也就是能用就好,够用就好,我们不会举太多的例子,但是这些都是最经常用到的特性。

从这节开始就是Kotlin和android 进行结合,使用Kotlin进行安卓应用的开发了。

安卓的开发从布局开始。

在这里插入图片描述
安卓的界面编写也是使用xml进行布局的,一般如果熟悉了html界面的布局,那么很容易就能够理解安卓有关的布局了,这里介绍两个比较重要的布局方式:线性布局(LinearLayout)和相对布局(RelativeLayout)。

新建的功能布局,一般是一个界面对应一个xml文件,main界面的xmlactivity_main.xml 中。

线性布局 LinearLayout

根据名字我们就很清楚,线性布局的意思了,相当于html中的div层,两种布局方向:

vertical 下的布局方式:

在这里插入图片描述
horizontal 下的布局方式:

在这里插入图片描述

vertical 布局代码:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="#00aaff" >

    <Button
        android:id = "@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Button" />

    <Button
        android:id = "@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Button" />


</LinearLayout>

horizontal 下的布局代码:

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:background="#A6A7AF" >

        <Button
            android:id = "@+id/btn3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:text="Button" />

        <Button
            android:id = "@+id/btn4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:text="Button" />


    </LinearLayout>

有几个属性需要熟悉一下:

  • wrap_content 为按照控件内容的大小进行调整
  • layout_marginLeft 为控件左边的偏移,其他的一次类推
  • layout_gravity 可以用来进行控件居中显示
  • layout_weight 控件在horizontal模式下占到的比率

相对布局 RelativeLayout

相对布局 主要两种相当模式,一种是父控件,一种是相对兄弟控件。

在这里插入图片描述
布局代码如下:

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="300dp"

        android:background="#9C27B0" >

        <Button
            android:id = "@+id/btn5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:text="Button5" />


        <Button
            android:id = "@+id/btn6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="Button6" />


        <Button
            android:id = "@+id/btn7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"

            android:layout_below="@+id/btn6"

            android:text="Button7" />


    </RelativeLayout>

几个重要的布局:

  • layout_alignParentxxxx 相对于父类的情况
  • layout_to 相对于兄弟的情况

项目在github的地址在这里。

小结

布局的方式比较多,但是这两个种布局方式是最重要的,也可以这么说掌握了这两种以后,其他的就可以依次类推,只要知道里面的属性基本上就容易上手了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Spring Cloud的架构使用学习升级之路

引言 Spring Cloud全家桶用了挺长时间了&#xff0c;很长一段时间都是基于已有的架构进行需求研发。今年成为团队技术负责人&#xff0c;承担了新的项目&#xff0c;这是很好的一个机会&#xff0c;于是开启了项目架构升级之路。 架构&#xff0c;是团队项目的根基。在一个团…

数字信号处理-5-傅里叶分析

1 傅里叶系数 傅里叶级数用公式如下&#xff1a; a0、a1、a2、a3…b1、b2、b3…叫做傅里叶系数。cosnx 或 sinnx 中的 n 对应着频率&#xff0c;决定 sin、cos 大小的系数是 an、bn。 2 傅里叶变换 步骤1 求傅里叶系数 从原波形 F(x) 中求傅里叶系数中的 a0、a1、a2、a3……

IPD-产品需求管理过程(1)

一、产品需求管理模型 在确定客户需求时,要考虑影响用户购买标准的八类基本需求($APPEALS),并基于客户视角进行详细分解,形成有针对性的产品。 1.1、需求管理业务流程 二、需求收集流程 2.1、需求收集的来源 路标规划:通过市场管理流程分析,落实到路标规划中的需求…

python中StringIO和BytesIO

1. 类文件对象 最常见的io操作是将磁盘中的文件读到内存以及内存内容写入文I件。还有一种内存和内存之间的IO&#xff0c;叫类文件对象&#xff0c;python中的StringIO和BytesIO就是类文件对象&#xff0c;通俗解释即&#xff1a;像操作文件一样在内存中操作字符串和二进制内容…

基于FPGA的SD卡的数据读写实现(SD NAND FLASH)

文章目录 1、存储芯片分类 2、NOR Flash 与 NAND Flash的区别 3、什么是SD卡&#xff1f; 4、什么是SD NAND&#xff1f; 5、SD NAND的控制时序 6、FPGA实现SD NAND读写 6.1、设计思路 6.2、仿真结果 6.3、实验结果 1、存储芯片分类 目前市面上的存储芯片&#xff0…

如何使用腾讯云提供的WordPress应用镜像搭建博客网站系统!

之前也有写过搭建WordPress的教程&#xff0c;如何使用轻量应用服务器搭建WordPress个人博客使用的是宝塔面板一件搭建的方式&#xff0c;但是还是有一些麻烦&#xff0c;这里我们之间使用腾讯云提供的WordPress应用镜像搭建&#xff0c;感兴趣小伙伴可以参考以下&#xff01; …

嵌入式分享合集108

一、PLC串口通讯的基本知识 这几天弄plc都要神经了 尤其西门子的 太烦了 s7200cn s7200smart s1200 编程软件都不一样~~服 &#xff0c; 然后接线也很烦 好了 正题 电气作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口 什么是串口通讯&#xff1f; 串口通讯的使…

阿里强势推出Spring源码进阶宝典:思维脑图+视频教程+笔记文档

这不是准备跳槽了&#xff0c;所以最近摸鱼比较多一些&#xff0c;老大默许了&#xff0c;我觉得我老大还是很好的。也在网上看了一些资料&#xff0c;但是&#xff0c;我发现很多讲解注解的时候&#xff0c;对于一些可以直接点击源码查看的内容讲解的占多数&#xff0c;但是授…

ThreadPoolExecutor 线程池参数详解,执行流程

线程池的使用: public static void main(String[] args) {ThreadFactory sThreadFactory new ThreadFactory() {private final AtomicInteger mCount new AtomicInteger(1);Overridepublic Thread newThread(Runnable r) {int andIncrement mCount.getAndIncrement();return…

成熟的汽车衡称重软件,应具备哪些品质

每台汽车都配电子计算机、打印机各一台&#xff0c;并配相应称重管理软件。制造厂商开发的最新软件应免费及时为买方升级。自动称重系统管理软件选用国内成熟产品&#xff0c;至少在国内有10套以上稳定运行业绩&#xff0c;需配一套容量为2KVA&#xff0c;220V的UPS电源至少满足…

Guava LongMath类

Guava LongMath类 Guava LongMath类 LongMath提供long基础类型的实用方法。 类声明 以下是com.google.common.math.LongMath类的声明&#xff1a; GwtCompatible(emulatedtrue) public final class LongMath extends Object 方法 方法继承 这个类继承了以下类方法&#xf…

二、数据库查询语句(多表查询篇)

二、数据库查询语句(多表查询篇) 1、笛卡尔积 ​ 前面涉及的都是单张表的查询&#xff0c;如果我们的查询条件相对比较复杂&#xff0c;需要涉及多张表进行查询&#xff0c;如果是两张无关的表联合查询&#xff0c;列出所有的可能的结果&#xff0c;如下图&#xff1a; 如果没…

网易云课堂-课程分析

需要原始数据的可以联系我、在评论区留下邮箱 需要原始数据的可以联系我、在评论区留下邮箱 需要原始数据的可以联系我、在评论区留下邮箱 需要原始数据的可以联系我、在评论区留下邮箱 数据展示 一级类目 二级类目 三级类目 求和项:在学人数 平均值项:原始价格 平均值…

docker-compose配合Dockerfile使用

也就是在dockers-compose.yml文件中添加build 指定一下我的Dockerfile文件的路径 例如我的dockers-compose.yml文件在docker-compose文件夹下&#xff0c;而docker-compose文件夹与Dockerfile和项目的war包在同一级目录&#xff0c;也就是Dockerfile文件&#xff0c;在dockers-…

readme.md编写并生成html

目录1、Markdown教程2、生成html3、目录制作3.1 vscode Markdown Preview Enhanced 插件3.2 自定义侧边栏4、参考1、Markdown教程 Markdown 教程 | 菜鸟教程 2、生成html 通过 vscode 下载 Markdown Preview Enhanced、Markdown PDF等插件&#xff0c;就可以实现转化 3、目…

Linux网络管理OSI和TCP/IP

作者简介&#xff1a;一名软件运维工作人员&#xff0c;正在自学云计算课程。宣言&#xff1a;人生就是B&#xff08;birth&#xff09;和D&#xff08;death&#xff09;之间的C&#xff08;choise&#xff09;&#xff0c;做好每一个选择。创作不易&#xff0c;动动小手给个点…

【改进灰狼优化算法】贪婪的非分层灰狼优化算法(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

RF电路设计常见bug及解决方法

单片射频器件大大方便了一定范围内无线通信领域的应用&#xff0c;采用合适的微控制器和天线并结合此收发器件即可构成完整的无线通信链路。它们可以集成在一块很小的电路板上&#xff0c;应用于无线数字音频、数字视频数据传输系统&#xff0c;无线遥控和遥测系统&#xff0c;…

转自【AI科技评论】专访李海洲教授 | 机器智能对话是毕生所求

一直来到实叻坡&#xff0c;乜事无。上山来做工&#xff0c;伯公“多隆”保平安。——潮州过番歌 所谓“过番”&#xff0c;指早期潮州人外出务工&#xff0c;乘坐小船历经七天七夜到达东南亚谋生&#xff0c;“实叻坡”是马来语“Selat”的音译词&#xff0c;便是指“新加坡”…

Quartz学习

任务执行流程 StdSchedulerFactory创建和属性初始化 如果自定义了属性&#xff0c;会在这里加载 StdScheduler创建 入口为StdSchedulerFactory#getScheduler();&#xff0c;首次进入时调用StdSchedulerFactory#instantiate&#xff1a; 如果没有配置自定义属性&#xff0c;则先…