布局管理器是指定View之间的排列方式的。view就是UI控件,下节课我会整理到,这里我们先讲布局,大布局在我看来就相当于一个房间,让view显示,就是说物品在房间的摆放规则。
一、View的简介
View ,一般都有TextView,EditText,Button,RadioButton,CheckBox,ImageView,ImageButton。
ViewGroup,一般有LinearLayout,RelativeLayout,FrameLayout,Spinner,ListView,GridView。
每一个View在布局中都有对应的标签,比如说TextView,它的标签就是<TextView>
布局与Activity的关系:布局只能在Activity或Dialog中加载和显示,就如MainActivity中onCreate()方法中的:setContentView(R.Layout.布局名),这个是加载布局。
在Activity中怎么访问和修改View控件的属性:先要在布局中找到,相对应的控件的ID,比如TextView的Id是tv,那么定义一个全局变量private TextView textView;在onCreate()方法中:textView=findViewById(R.id.tv);tv.setXXX()来进行相关属性的设置。
一般常用的属性是:id,layout_width,layout_height,background。
一般常有的与属性对应的方法:setText(String),setTextSize(float),setTextColor(int),setSingleLine(boolean),setLines(int),setMaxLines(int),setAutoLinkMask(int)。
其中setAutoLinkMask()
textView.setAutoLinkMask(Linkify.WEB_URLS);// 当文本内容中包含超链接格式的文本时,自动转换成超链接样式,点击会自动跳转到指定的网页
textView.setAutoLinkMask(Linkify.PHONE_NUMBERS);//自动转手机号码点击它可进入系统拨号界面
textView.setAutoLinkMask(Linkify.EMAIL_ADDRESSES);//自动转邮件地址点击它可发送邮件(要提前设置好自己的电子邮件)
textView.setAutoLinkMask(Linkify.MAP_ADDRESSES);//自动转街道地址点击它可查看位置(前提已安装了google地图)
textView.setAutoLinkMask(Linkify.ALL);//包括上面4种情况
二、布局管理器
布局管理器一共有5种,分别是:
线性布局:LinearLayout.
相对布局:RelativeLayout.
表格布局:TableLayout.
绝对布局:AbsoluteLayout(已废弃).
帧布局:FrameLayout
1、LinearLayout
(1)在线性布局中注意的属性是:orientation="horizontal|vertical",超过一个view的时候没有这个属性会报错。
(2)第二个需要注意的是weight的使用:
控件的width/height的属性必须保持一致;
width/height="0dp" 权重值越大,所占空间越大(正比例);
width/height="match_parent" 权重值越大,所占空间越小 (反比例);
width/height="wrap_content" 权重值越大,所占空间越大(正比例);
width/height不为“0dp“时,系统会优先考虑权重值小的组件,暂时不会放入代码,请大家见谅。
(3)gravity是控件内容及子控件的对齐方式,具体的属性按快捷键都会出来,这里就不一一介绍了。
(4)layout_gravity是控件在父布局中的对齐方式。
2、RelativeLayout相对布局
这个属性分为两大部分,一个是相对兄弟控件的,一个是相对父控件的。
(1)相对兄弟控件:
放置位置:
toLeftOf在指定的兄弟控件的左边位置
toRightOf在指定的兄弟控件的右边位置
below在指定的兄弟控件下边位置
above在指定的兄弟控件上边位置
对齐方式:
alignLeft与指定的兄弟控件左对齐
alignRight与指定的兄弟控件右对齐
alignTop与指定的兄弟控件顶部对齐
alignBottom与指定的兄弟控件底部对齐
alignBaseLine与指定的兄弟控件内容对齐
(2)相对父控件:
位置对齐:
alignParentLeft放置在父控件的左边(默认是这种放置)
alignParentRight放置在父控件的右边
alignParentTop放置在父控件的顶部
alignParentBottom放置在父控件的底部
居中对齐:
centerInParent放置在父控件的居中位置
centerHorizontal放置在父控件的水平居中位置
centerVertical放置在父控件的垂直居中位置
3、FrameLayout帧布局
layout_gravity 设置子控件位置的
foreground=“#4f00”设置绘制在所有子控件之上的drawable
foregroundGravity设置绘制在所有子控件之上的drawable的gravity属性
measureAllChildren计算所有子控件的大小
关于布局这块,基本上常用的就是线性布局和相对布局,大家把这两部分一定要掌握清晰。欢迎转载