Android_Layout (一)

layout (布局)  --->Android 有五大布局,分别是

  • LinearLayout : 线性布局,子组件按照垂直或者水平方向来布局。
  • RelativeLayout :相对布局,按照控件之间的相互位置进行参照物的概念排布,存在一个排布,存在一个参照物的概念, 一般来说在相对布局中的控件都会存在id 的属性。
  • TableLayout :表格布局,继承于线性布局。(用法类似)
  • AbsoluteLayout 绝对布局,是通过指定控件的x/y坐标来定位的(显示效果死板,不利于开发,几乎被弃用)。
  • FrameLayout 帧布局,画面显示的效果

一、线性布局(LiearLayout) 

    线性布局在开发中使用最多,具有垂直方向与水平方向的布局方式
  通过设置属性“android:orientation”控制方向,属性值垂直(vertical)和水平(horizontal),默认水平方向。

 常用属性:

  android:layout_gravity 本元素相对于父元素的重力方向

  android:gravity 本元素所有子元素的重力方向

  android:orientation 线性布局以列或行来显示内部子元素

  android:layout_weight 子元素对未占用空间水平或垂直分配权重值


  当 android:orientation="vertical" 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。!!!!

  当 android:orientation="horizontal" 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。!!!!

android:layout_gravity 和 android:gravity 的区别

  android:gravity 对元素本身起作用-本身元素显示在什么位置

  android:layout_gravity 相对与它的父元素-元素显示在父元素的什么位置。

  如:Button控件

    android:layout_gravity 表示button在界面上的位置

    android:gravity表示button上的字在button上的位置。

  可选值[多选时用“|”分开]

    top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。

  • top 将对象放在其容器的顶部,不改变其大小.
  • bottom 将对象放在其容器的底部,不改变其大小.
  • left将对象放在其容器的左侧,不改变其大小.
  • right将对象放在其容器的右侧,不改变其大小.
  • center_vertical 将对象纵向居中,不改变其大小.

  垂直对齐方式:垂直方向上居中对齐。

    fill_vertical 必要的时候增加对象的纵向大小,以完全充满其容器. 垂直方向填充

    center_horizontal 将对象横向居中,不改变其大小水平对齐方式:水平方向上居中对齐

    fill_horizontal 必要的时候增加对象的横向大小,以完全充满其容器. 水平方向填充

    center 将对象横纵居中,不改变其大小.

    fill 必要的时候增加对象的横纵向大小,以完全充满其容器.

    clip_vertical 附加选项,用于按照容器的边来剪切对象的顶部和/或底部的内容. 剪切基于其纵向对齐设置:顶部对齐时,剪切底部;底部对齐时剪切顶部;除此之外剪切顶部和底部.垂直方向裁剪

  clip_horizontal 附加选项,用于按照容器的边来剪切对象的左侧和/或右侧的内容. 剪切基于其横向对齐设置:左侧对齐时,剪切右侧;右侧对齐时剪切左侧;除此之外剪切左      侧和右侧.水平方向裁剪

  例子

  TextView要让文本垂直/水平居中显示,有两种情况需要考虑:

  1、layout_width/layout_height为wrap_content,此时要让TextView在父控件上居中显示,必须设置layout_gravity=”center”。

  2、layout_width/layout_height为fill_parent,此时由于TextView已占据父窗体所有空间,必须设置gravity=”center”。

二、相对布局

  相对布局的子控件会根据它们所设置的参照控件和参数进行相对布局。参照控件可以是父控件,也可以是其它子控件,但是被参照的控件必须要在参照它的控件之前定义

  常用属性:

  RelativeLayout用到的一些重要的属性:
  第一类:属性值为true或false
    android:layout_centerHrizontal 水平居中
    android:layout_centerVertical 垂直居中
    android:layout_centerInparent 相对于父元素完全居中
    android:layout_alignParentBottom 贴紧父元素的下边缘
    android:layout_alignParentLeft 贴紧父元素的左边缘
    android:layout_alignParentRight 贴紧父元素的右边缘
    android:layout_alignParentTop 贴紧父元素的上边缘
    android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
  第二类:属性值必须为id的引用名“@id/id-name”
    android:layout_below 在某元素的下方
    android:layout_above 在某元素的的上方
    android:layout_toLeftOf 在某元素的左边
    android:layout_toRightOf 在某元素的右边
    android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
    android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
    android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
    android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
  第三类:属性值为具体的像素值,如30dip,40px
    android:layout_marginBottom 离某元素底边缘的距离
    android:layout_marginLeft 离某元素左边缘的距离
    android:layout_marginRight 离某元素右边缘的距离
    android:layout_marginTop 离某元素上边缘的距离
    EditText的android:hint
  设置EditText为空时输入框内的提示信息。
    android:gravity
    android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity="right"则                        button上面的文字靠右
    android:layout_gravity
    android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.                        以button为例,android:layout_gravity="right"则button靠右
    android:layout_alignParentRight
  使当前控件的右端和父控件的右端对齐。这里属性值只能为true或false,默认false。
    android:scaleType:
    android:scaleType是控制图片如何resized/moved来匹对ImageView的size。ImageView.ScaleType / android:scaleType值的意义区别:
    CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
    CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
    CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
    FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示
    FIT_END / fitEnd 把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
    FIT_START / fitStart 把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
    FIT_XY / fitXY 把图片 不按比例扩大/缩小到View的大小显示
    MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。
    ** 要注意一点,Drawable文件夹里面的图片命名是不能大写的。

例子:

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>2 <?xml version="1.0" encoding="utf-8"?>3 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"4 android:layout_width="fill_parent"5 android:layout_height="fill_parent"6 >7 <AnalogClock8     android:id="@+id/aclock"9     android:layout_width="wrap_content"
10     android:layout_height="wrap_content"
11     android:layout_centerInParent="true" />
12 <DigitalClock
13     android:id="@+id/dclock"
14     android:layout_width="wrap_content"
15     android:layout_height="wrap_content"
16     android:layout_below="@id/aclock"
17     android:layout_alignLeft="@id/aclock"
18     android:layout_marginLeft="40px" />
19 <TextView
20     android:layout_width="wrap_content"
21     android:layout_height="wrap_content"
22     android:text="当前时间:"
23     android:layout_toLeftOf="@id/dclock"
24     android:layout_alignTop="@id/aclock"/>
25 </RelativeLayout>
复制代码

 

三、帧布局(FrameLayout)

  帧布局,又叫框架布局,是五大布局中最简单的一个布局,在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。显示效果如下,第一个TextView被第二个TextView完全遮挡,第三个TextView遮挡了第二个TextView的部分位置

 

常用属性:

  android:foreground:设置改帧布局容器的前景图像

  android:foregroundGravity:设置前景图像显示的位置

 

例子:

  

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>2 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"3 android:layout_width="fill_parent" android:layout_height="fill_parent">4 <LinearLayout android:id="@+id/linearLayout1"5 android:layout_height="match_parent"6 android:layout_width="match_parent">7 <Button android:text="Button"8 android:id="@+id/button1"9 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"></Button>
11 </LinearLayout>
12 <LinearLayout android:layout_width="match_parent"
13 android:id="@+id/linearLayout3"
14 android:layout_height="match_parent"
15 android:gravity="bottom|right">
16 <Button android:text="Button"
17 android:id="@+id/button3"
18 android:layout_width="wrap_content"
19 android:layout_height="wrap_content"></Button>
20 </LinearLayout>
21 <LinearLayout android:layout_height="match_parent"
22     android:id="@+id/linearLayout2"
23     android:layout_width="match_parent"
24     android:gravity="right">
25 <Button android:text="Button"
26     android:id="@+id/button2"
27     android:layout_width="wrap_content"
28     android:layout_height="wrap_content"></Button>
29 </LinearLayout>
30 <LinearLayout android:layout_width="match_parent"
31     android:id="@+id/LinearLayout01"
32     android:layout_height="match_parent"
33     android:gravity="bottom|left">
34 <Button android:id="@+id/Button01"
35     android:text="Button"
36     android:layout_width="wrap_content"
37     android:layout_height="wrap_content"></Button>
38 </LinearLayout>
39 </FrameLayout>
复制代码

 

 

四、绝对布局(AbsoluteLayout)

  绝对布局的子控件需要指定相对于此坐标布局的横纵坐标值,否则将会像框架布局那样被排在左上角。手机应用需要适应不同的屏幕大小,而这种布局模型不能自适应屏幕尺寸大小,所以应用的相对较少。

 

常用属性:

  1.控制大小

  android:layout_width:组件高度

  android:layout_height:组件高度

  2.控制位置

  android:layout_x:设置组件的X坐标

  android:layout_y:设置组件的Y坐标

 由于该布局应用低,不同的手机,屏幕大小不同,显示的布局也不一样,所以我就部深入了解了

五、表格布局(TableLayout)

  表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象。TableRow可以添加子控件,每添加一个为一列。

 

常用属性:

  

  android:collapseColumns:将TableLayout里面指定的列隐藏,若有多列需要隐藏,请用逗号将需要隐藏的列序号隔开。             

  android:stretchColumns:设置指定的列为可伸展的列,以填满剩下的多余空白空间,若有多列需要设置为可伸展,请用逗号将需要伸展的列序号隔开。                

  android:shrinkColumns:设置指定的列为可收缩的列。当可收缩的列太宽(内容过多)不会被挤出屏幕。当需要设置多列为可收缩时,将列序号用逗号隔开。

   列元素(Button)属性:(奇怪的是button 里面没有android:layout_column 和android:layout_span两个属性,写进去无反应,还不知道为什么)

  android:layout_colum:设置该控件在TableRow中指定的列

  android:layout_span:设置该控件所跨越的列数

 

例子:

 

  

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>2 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"3 android:layout_width="fill_parent"4 android:layout_height="fill_parent"5 android:stretchColumns="1">6 <TableRow>7 <TextView8 android:layout_column="1"9 android:padding="3dip" android:text="Row1"/>
10 <TextView
11 android:text="1"
12 android:gravity="right"
13 android:padding="3dip" />
14 </TableRow>
15 <View
16 android:layout_height="2dip"
17 android:background="#FF909090" />
18 <TableRow>
19 <TextView
20 android:text="*"
21 android:padding="3dip" />
22 <TextView
23 android:text="Row12"
24 android:padding="3dip" />
25 <TextView
26 android:text="2"
27 android:gravity="right"
28 android:padding="3dip" />
29 </TableRow>
30 <View
31 android:layout_height="2dip"
32 android:background="#FF909090" />
33 <TableRow>
34 <TextView
35 android:layout_column="1"
36 android:text="Row13"
37 android:padding="3dip" />
38 </TableRow>
39 </TableLayout>

转载于:https://www.cnblogs.com/hxb2016/p/6090286.html

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

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

相关文章

前端:uniapp封装网络请求笔记

uniapp作为开发移动端的前端框架&#xff0c;目前国内是非常流行的&#xff0c;使用HbuilderX开发工具基于uniapp框架开发的系统可以方便的转换为小程序、APP等移动端程序&#xff0c;大大降低了移动开发的成本。网络请求更是每个前端项目必备的技术&#xff0c;所以有必要进行…

java中instanceof使用详细介绍

instanceof是Java语言中的一个二元运算符&#xff0c;它的作用是&#xff1a;判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例&#xff0c;即它左边的对象是否是它右边的类的实例&#xff0c;该运算符返回boolean类型的数据。 boolean result obj…

javaWEB总结(9):自定义HttpServlet

前言:我们知道 MyHttpServlet是MyGenericServlet的子类&#xff0c;MyHttpServlet会继承父类的方法&#xff0c;可是却很少去追问MyHttpServlet中的doGet方法和doPost方法是如何进行判断的&#xff0c;本文主要做一个小例子&#xff0c;进一步理解HttpServlet。有些代码前文多次…

Java中局部变量必须初始化

Java中有两种变量&#xff0c;局部变量和成员变量。 成员变量可以不进行初始化&#xff0c;虚拟机也会确保它有一个默认的值。 局部变量不能这样做&#xff0c;我们必须对它进行赋值&#xff0c;才能使用它。

php 直播服务器搭建,基于Nginx搭建RTMP/HLS视频直播服务器

1、Nginx环境搭建(基于lnmp环境)//下载并安装lnmp环境wget -c http://soft.vpser.net/lnmp/lnmp1.3.tar.gz && tar zxf lnmp1.3.tar.gz && cd lnmp1.3 && ./install.sh lnmp安装完成安装完成后访问服务器地址会出现如下界面lnmpPS&#xff1a;安装时生…

办公:office办公软件Excel表格的打印技巧

很多新手使用办公软件过程中&#xff0c;对于Excel的打印出现了诸多问题&#xff0c;今天我们就一起来看看表格打印的几个技巧&#xff01; 打印预览时网格线怎么不见了&#xff1f; 如何调整打印区域的页边距&#xff1f; 如何设置单色打印&#xff1f; ...... 这些打印时遇到…

线程池和线程详细教程

1. 线程池的概念&#xff1a; 线程池就是首先创建一些线程&#xff0c;它们的集合称为线程池。使用线程池可以很好地提高性能&#xff0c;线程池在系统启动时即创建大量空闲的线程&#xff0c;程序将一个任务传给线程池&#xff0c;线程池就会启动一条线程来执行这个任务&#…

虚拟主机 php .htacess,LiteSpeed添加虚拟主机+支持htaccess图文教程

上次给大家简单介绍了Debian下手动安装LiteSpeedMySQLPHP的教程(点击查看)&#xff0c;但是这个教程还没完&#xff0c;想要使用litespeed还要进入后台进行设置&#xff0c;包括添加虚拟主机和.htaccess伪静态的支持&#xff0c;本文就继续这个话题给大家详细做个图文教程吧~为…

前端:uniapp封装组件用法笔记

大家在做前端项目开发的时候&#xff0c;经常会遇到公用的一些页面&#xff0c;比如搜索、列表、商品详情卡片、评论列表等。为了提高开发效率、使代码看起来更加简洁&#xff0c;这个时候封装相应的组件是最好的解决方案。今天小编给大家介绍一下如何在uniapp中封装组件&#…

Angular的工作原理

首先上一小段代码&#xff08;index.html&#xff09;&#xff0c;结合代码我们来看看&#xff0c;angular一步一步都做了些什么。 <!doctype html> <html ng-app><head><script src"angular.js"></script></head><body>&…

网络知识:四个网络命令ping、arp、tracert、route的用法介绍

网络相关的从业人员&#xff0c;都需要面对检测和解决网络故障的各种问题&#xff0c;实际案例中因为网络导致的故障也是最多的&#xff0c;今天我们和大家一起来学习一下解决网络故障时使用最多的四个网络命令。希望对大家以后的实际工作中的故障排除起到作用。 1、Ping命令的…

jQuery掷骰子

网上找的jQuery掷骰子效果&#xff0c;测试兼容IE7及以上浏览器&#xff0c;IE6没有测试 js代码如下&#xff1a; 1 $(function(){2 var dice $("#dice");3 dice.click(function(){4 $(".wrap").append("<div iddice_mask><…

电脑知识:台式电脑如何使用无线网上网

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

电脑维修:如何给笔记本电脑升级内存条

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

Object o = new Object()在内存中占几个字节

CAS&#xff1a; Compare and Swap&#xff0c;即比较再交换。 jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的&#xff0c;这是一种独占锁&#xff0c;也是…

MYSQL笔记:删除操作Delete、Truncate、Drop用法比较

今天小编给大家梳理一下MYSQL删除操作Delete、Truncate、Drop用法有什么区别&#xff0c;到底该如何合理使用&#xff0c;希望对大家能有帮助&#xff01;1、执行速度比较Delete、Truncate、Drop关键字都可以删除数据drop>truncate>delete2、原理方面2.1 deletedelete属于…

partition oracle用法,Oracle partition by 使用说明

--用法详解0、select * from wmg_test; ---测试数据1、select v1,v2,sum(v2) over(order by v2) as sum --按照 v2排序&#xff0c;累计nn-1....1from wmg_test;2、select v1,v2,sum(v2) over(partition by v1 order by v2) as sum --先分组&#xff0c;组内在进行…

SQLServer优化:SQLServer中NOLOCK关键字的用法介绍

目录 1、为什么SQLServer有NOLOCK关键字&#xff1f; 2、SQLServer有NOLOCK有什么问题 3、NOLOCK使用场景 4、nolock和with(nolock)的区别 5、表解锁脚本 1、为什么SQLServer有NOLOCK关键字&#xff1f; SQLServer没创建一个查询&#xff0c;都相当于创建一个查询会话&#xff…

20144303 20145239 实验三

20144303 20145239 实验三 实验内容 1、首先连接好实验箱电源&#xff0c;用串口线、并口线、网线、连接实验箱和主机 2、安装ADS并破解 安装文件在00-ads1.2目录下&#xff0c;破解方法在00-ads1.2\Crack目录下 3、安装GIVEIO驱动(安装文件在01-GIVEIO目录下) 把整个GIVEIO目录…