Android布局(1)
来源:互联网 发布:coc狂暴法术数据 编辑:程序博客网 时间:2024/05/20 08:21
布局的基本概念:
①布局就是把界面中控件按照某种规律摆放在指定的位置
②主要就是为了解决应用程序在不同手机中的显示问题
Android实现布局的两种方式:
①代码:布局文件对应的Java类都是ViewGroup类的子类
②xml配置文件:所有的布局文件都是放在res/layout文件夹中
布局支持嵌套
布局的一些基本属性:
android:layout_width:设置控件所占的宽度
取值范围:warp_content、fill_parent、match_parent
单位:dp:逻辑长度单位,在160dpi屏幕上,1dp=1px=1/160英寸
dpi:屏幕每英寸有多少个像素点随着密度变化,对应像素数量也变化,但没有直接的变化比例
dip:与dp相同,多用于Google的实例中
sp:与dp类似,但是可以根据用户的字体大小首选项进行缩放
pt:磅,表示一个点,是屏幕的物理尺寸。大小为1英寸的1/72
mm:毫米,屏幕的物理尺寸
in:英寸,是屏幕的物理尺寸。每英寸等于2.54厘米 例如:形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸
px:像素 例如:一张图片的的大小为320*480像素
在开发中,为了兼容各种手机,一般使用dp作为控件的长、宽单位。而使用sp来作为字体的单位。因为dp是与密度无关,sp除了与密度无关外,还与scale无关
例如:如果屏幕密度为160,这时dp和sp是一样的。1dp=1sp=1px。但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸)。而屏幕密度变成了320。那么原来TextView的宽度设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动将width属性值设置成320px的。也就是160*320/160。其中320/160可称为密度比例因子。也就是说,如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换
android:layout_height :设置控件所占的高度
取值范围同上
android:layout_gravity:当前控件在父视图中的位置
取值范围:top|bottom|left|right(上下左右)
center_vertical(水平居中)|center_horizontal(垂直居中)|center(居中)
fill_vertical(若有可能,纵向拉伸以填满容器)
fill_horizontal(若有可能,横向以拉伸填满容器)
android:layout_marginTop:当前视图上边缘到某条基线的距离,只能取固定值
android:layout_marginButtom:当前视图下边缘到某条基线的距离,只能取固定值
Android的5大布局:
今天先说:
1.LinearLayout(线性布局):线性布局会将其中的控件一个接一个排列,可以拍横也可竖排
常用属性:①设置排列方向:(1)xml属性:android:orientation:1.horizontal(水平排列) 2.vertical(垂直排列)
(2)方法:setOrientation(int)
②设置组件的对齐方式(1)xml属性:android:gravity
(2)方法:setGravity(int)
android:layout_gravity和android:gravity的区别:前者。后者是针对控件里的元素来说的,用来控制元素在该是控件里的显示位置。
特殊情况:当android:orientation="vertical"时,android:layout_gravity只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal是生效的
当android:orientation="horizontal"时,android:layout_gravity只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical是生效的
2.FrameLayout(帧布局):①类似于ps中图层的概念
②为每个加入其中的组件创建单独的帧
③看上去像是组件叠加到一起
3.TableLayout(表格布局):①表格布局可将试图按行、列进行排列
②直接向TableLayout中添加控件,则这个控件将占一行。
③一个表格布局由一个<TableLayout>标签和若干<TableRow>标签组成
常用属性:①某列被收缩,以保证表格能完全填充父容器的宽度:shrinkColumns setColumnShrinkable(int,boolean)
②某列被收缩,以保证表格能完全填充父容器的宽度:stretchColumns setColumnStretchable(int,boolean)
③某列被隐藏:android:collapseColumns setColumnsCollapsed(int,boolean)
④表格跨列:android:layout_span="3"
补充:还有个网格布局
- Android布局(1)
- Android布局(1)--线性布局(LinerLayout)
- android布局(1)框架布局和线性布局
- android布局(1)- LinearLayout
- android 布局问题(1)
- Android布局(相对布局)
- Android--五大布局(1)线性布局LinearLayout
- 菜鸟学android(1)线性布局与相对布局
- android 五大布局(1)线性布局
- Android布局(线性布局 网格布局 帧布局)
- Android学习笔记之布局(1)
- Mono for Android (1) 之布局
- Mono for Android (1) 之布局
- android 简单布局素材(1)
- Android起步之布局(1)LinearLayout
- android 作业1相对布局(拼图)
- Android优化(1)--布局优化
- Android 布局 实验1
- Flutter进阶—实现动画效果(十)
- Android本地程序的printf输出到logcat中
- 安卓开发:自定义PopupWindow,实现模仿iOS底部弹出菜单
- iOS常用代码段分享
- C# redis操作
- Android布局(1)
- Java25
- YYHS1619(tyvj 1050)
- 算法导论 思考题 15-8(基于接缝裁剪的图像压缩)
- Java26
- Java27
- Codevs1732 Fibonacci数列2
- Java28
- centos云服务器基础配置详解(三)安装tomcat