线性布局:以水平或垂直方向排列
相对布局:通过相对定位排列
帧布局:开辟空白区域,帧里的控件(层)叠加
表格布局:表格形式排列
绝对布局:通过X,Y坐标排列
在activity-main把原来的组件删除,在text中替换把约束布局改成线性布局
androidx.constraintlayout.widget.ConstraintLayout
RelativeLayout
添加一个Button
android:layout_alignParentTop="true"//上边界
android:layout_alignParentStart="true"//左边界
android:layout_marginTop="40dp"//上边距
android:layout_marginStart="40dp"//左边距
同理的方式添加其他的Button
//右下方添加Button
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="40dp"
android:layout_marginBottom="40dp"
//左下角添加Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="65dp"
android:layout_marginBottom="42dp"
//中间位置添加Button
android:layout_centerInParent="true"
//以中间为参考线,中间Button下方40dp添加Button
android:layout_centerHorizontal="true"
android:layout_below="@id/button4"
android:layout_marginTop="40dp"
//以中间为参考,中间Button右方添加Button
android:layout_centerVertical="true"
android:layout_toEndOf="@id/button4"
android:layout_marginLeft="40dp"
运行结果如下:
把约束布局的代码改成LinerLayout,添加线性关系
//水平
android:orientation="horizontal"
//垂直
android:orientation="vertical"
这里有个权重,三个Button总共是3,每一个分为1,如果让权重有作用,每个Button的宽度改为0dp
android:layout_weight="1"
运行结果如下:
把约束布局改为TableLayout,添加行,在tableLayout中点击TableRow,高设为wrap_content。
把第五个Button放在第二个位置,也就是第五个列设置为1
android:layout_column=“1”
跨列操作:
android:layout_span=“2”
运行结果如下:
练习题目:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
.......
tools:context=".MainActivity">
<LinearLayout
...
android:layout_marginTop="20dp"
android:layout_marginStart="20dp"
android:layout_marginRight="20dp"
android:layout_marginEnd="20dp">
<Button
android:id="@+id/button4"
...
android:text="Button" />
<Button
android:id="@+id/button5"
...
android:text="Button" />
<Button
android:id="@+id/button6"
...
android:layout_weight="2"
android:text="Button" />
</LinearLayout>
<LinearLayout
...
android:layout_centerInParent="true"
android:layout_marginTop="20dp"
android:layout_marginStart="20dp"
android:layout_marginRight="20dp"
android:layout_marginEnd="20dp">
<Button
android:id="@+id/button7"
...
android:layout_weight="2"
android:text="Button" />
<Button
android:id="@+id/button8"
...
android:text="Button" />
<Button
android:id="@+id/button9"
...
android:text="Button" />
</LinearLayout>
<LinearLayout
...
android:layout_alignParentBottom="true"
android:layout_marginTop="20dp"
android:layout_marginStart="20dp"
android:layout_marginRight="20dp"
android:layout_marginEnd="20dp"
>
<Button
android:id="@+id/button10"
...
android:layout_weight="1"
android:text="Button" />
<Button
android:id="@+id/button11"
...
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
</RelativeLayout>
运行结果如下:
版权声明:本文系本站作者自己翻译整理,欢迎转载,但转载请以超链接形式注明文章来源(planckscale.info)、作者信息和本声明,否则将追究法律责任。我们在实时三维重建方面的工作今年已经密集展开。或许不久后某一天,你会在本站看到带有SLAM(即时定位与地图构建)功能的四轴飞行器,或者让你在书桌上打一场现代战争的增强现实应用。在敲锣打鼓欢天喜地亮出我们自己的三维重建实现前,先拿别人的东
为什么80%的码农都做不了架构师?>>> ...
设计点类(Point)和矩形类(Rect)1)点类Point的属性x、y分别是点的横坐标和纵坐标。2)矩形类Rect包括矩形左下角和右上角两个点。3)矩形类Rect包括计算该矩形面积、周长的方法。4)给出构造函数,初始化数据成员。5)编写主函数,完成测试。6)写出程序代码,并写出运行结果或者提交运行界面的截图。新手小白,C++题目,急求,在线等,各位大神帮帮忙....
红外体温枪方案开发 红外体温枪又称为红外测温仪,可以在1秒内准确地测量出人体的温度。使用时只需将探头对准额头,按下按钮即可。工作原理其实很简单:当物体的温度高于“绝对零度”,即-273℃时,物体会向外辐射红外线。使用红外线探头获得不同物体的红外光线强度,经过放大电路和模数转化电路,即可将温度数据显示在液晶显示器上。 一、红外体温枪方案的用途 1、人体体温测量:可以准确...
利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要使用反编译工具,代码很容易被暴露,这里需要了解的就是Java的ClassLoader对象。 Java运行时装入字节码的机制隐含地意味着可以对字节码进行修改。JVM每次装入类文件时都需要一个称为ClassLoader的对象,这个对象负责把新的类装入正在运行的JVM。
Elasticsearch 多个字段一个搜索,进行高亮显示 多字段高亮显示 if (!empty($name)) { $params['body']['query']['bool']['must'][] = [ 'match_phrase' => [ 'name' => $name ] ]; } .
atcoder ABC2021场D-aab aba baa题解记录大致题意为: 给出你三个数字a,b,k希望你求出由a个字符‘a’和b个字符‘b’组成的字典序为k的排列并输出。 其中aaaa...bbbb...的字典序为1解题思路如下: 已知字典序是从字符串开头匹配直到遇到第一个不相等的字符时比较两个字符的来判断字典序大小, 则在该题中我们可以从前往后逐个确认每一位字符,设当前确认的是第i位,还要a个‘a'和b个‘b’,字典序为k, 确认方式如下: ...
由于vs2019默认最简安装,所以在进行C++开发时,如果不选择,就不会安装C++的编译和调试工具。为了解决这个问题,需要打开vs的installer,选择修改vs2019,在工作负载中选中Visual Studio 扩展开发 ,下载并安装即可。此外,必须选择一个C++开发项,我选择的是"C++的linux开发",可以根据情况选择相应的开发方式。我的配置如下...
时间序列的聚类方法时间序列是按照时间排序的一组随机变量,它通常是在相等间隔的时间段内,依照给定的采样率,对某种潜在过程进行观测的结果。时间序列数据是实值型的序列数据,具有数据量大、数据维度高以及数据是不断更新的等特点。时间序列聚类方法的分类什么是聚类?聚类是一种无监督学习方法,聚类就是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使类内差异最小,类间差异最大。传统的聚类方法针对...
来源:酷壳 - CoolShell.cn 作者:陈皓有一些网友看了前两天的《Linux下应该知道的技巧》希望我能教教他们用awk和sed,所以,出现了这篇文章。我估计这些80后的年轻朋友可能对awk/sed这类上古神器有点陌生了,所以需要我这个老家伙来炒炒冷饭。况且,AWK是贝尔实验室1977年搞出来的文本出现神器,今年是蛇年,是AWK的本命年,而且年纪和我相仿,所以非常有必要为他写篇文章...
从Ubuntu转到Fedora后还有点用不惯,找了一些配置的方法让系统用着能够更顺手点。 1. 使用sudo命令 Fedora默认没有sudo命令,每次用终端操作时都要切换到管理员模式很麻烦,于是就把sudo命令添加上。首先取得管理员权限,然后输入如下命令:$ su -# visudo打开配置文件,找到root ALL=(ALL) ALL然后在这句话的下面添加登陆账户的管理员
今天使用Mybatis对数据库进行CURD操作。详细讲解一下具体的增删改查的操作,并对可能出现的问题进行说明。