发表于: 2016-10-10 18:15:03
2 782
今天的学习:
布局的概念是:能决定程序的界面是怎样排布的,布局可以套用
LinearLayout是线性布局控件,它所包含的子控件 可以以横向或者竖向排列
activity_main.xml
LinearLayout常用的两个属性:
android:orientation="vertical"(垂直排布)/"horizontal"(水平排布)
布局中子类控件位置有两种概念,一种是布局中子类布局的位置,如下:
子类控件的位置:
android:gravity="center" 子类控件处于布局XY轴的正中心(居中)
android:gravity="center_horizontal" 子类控件处于布局X轴居中
android:gravity="center_vertical" 子类控件处于布局Y轴居中
android:gravity="right" 子类控件处于布局右边
android:gravity="left" 子类控件处于布局左边
android:gravity="bottom" 子类控件处于布局底部
gravity属性可以联用:
android:gravity="right|center_vertical" //子类控件处于布局右边并垂直居中
android:gravity="left|center_vertival" //子类控件处于布局左边并垂直居中
android:gravity="bottom|center_horizontal" //子类控件处于布局底部并水平居中
android:gravity="top|center_horizontal" //子类控件处于布局顶部并水平居中(PS:猜的有top)
同理:应该有不能联用的属性写法。。
android:gravity="right|center_hotizontal" //right已经处于X轴的最右了,应该不能和水平居中属性联用,有冲突
android:gravity="left|center_hotizontal" //left已经处于X轴的最左了,应该不能和水平居中属性联用,有冲突
android:gravity="bottom|center_vertical" //bottom已经处于Y轴最下,应该不能和垂直居中联用
android:gravity="top|center_vertical" //top已经处于Y轴最上,应该不能和垂直居中联用
只有LinearLayout布局才有layout_gravuty属性布局中子类控件位置有两种概念,一种是该布局处于父布局中的位置,例子如下:
android:layout_gravity="center_horizontal" //子类控件本身在父类容器中水平居中
android:layout_gravity="center_vertical" //子类控件本身在父类容器中垂直居中
android:layout_weight="整数或者小数"是指子类控件在父容器中所占比例
例如有两个Button控件,它们的layout_weight属性分别为1,也就意味着父容器的总比例为2,两个Button控件各占一半
android:layout_weight="1"
如果控件的android:layout_height属性设置为"match_parent"两个控件在父容器中所占比例正好相反。。
总结:线性布局还是比较好理解0.0
相对布局:RelativeLayout ,父容器中子类控件将以控件之间的相对位置或者子类控件相对父容器位置的方式排列
(感觉是PC桌面取消自动排列功能,可以随意摆放图标)
子类控件相对父容器排列位置的常用属性:
android:layout_alignParentleft="true" //子类控件相对父类容器靠左
android:layout_alignParentRight="true" //子类控件相对父类容器靠右
android:layout_alignParentTop="true" //子类控件相对父类容器靠上
android:layout_alignParentBottom="true" //子类控件相对父类容器靠下
android:layout_marginLeft="50dp" //子类控件距离父类容器左边的距离
android:layout_marginRight="50dp" //子类控件距离父类容器右边的距离
android:layout_marginTop="50dp" //子类控件距离父类容器上边的距离
android:layout_marginBottom="50dp" //子类控件距离父类容器下边的距离
如果距离父类容器4个边都要设置相同的边距,可以直接使用android:layout_margin=""
android:layout_centerInParent="true" //子类控件相对父类容器既水平居中又垂直居中
android:layout_centerHorizontal="true" //子类控件相对父类容器水平居中
android:layout_centerVertical="true" //子类控件相对父类容器垂直居中
子类控件相对于子类控件的位置:
android:layout_below="@+id/***" //该控件位于指定控件的底部(控件的顶部位于指定控件的底部下面)
android:layout_above= //该控件位于指定控件的上面
android:layout_toRightOf= //该控件位于指定控件的右边
android:layout_toLeftOf= //该控件位于指定控件的左边
android:layout_alignBaseline= //该控件的内容和指定控件的内容在一个水平线上
android:layout_alignBottom //该控件底部边缘和指定控件的底部边缘对齐,以下同理
android:layout_alignTop
android:layout_alignRight
android:layout_alignLeft
总结:相对布局有子类控件距离父类容器的位置,子类控件相对于子类控件的位置,感觉比线性布局灵活一些
但是属性太多了。。光记得话记不住,应该概念懂了就能过使用了。
帧布局:FrameLayout,所有子控件都不能被指定放置,会被全部放置在左上角,后面的控件会直接覆盖在前面的控件上,
将前面的控件覆盖或完全覆盖 可以使用android:layout_gravity属性
总结:。。。这个布局了解的最快。。还不清楚哪些地方能用。
绝对布局:AbsoluteLayout,可以直接指定子元素的绝对位置(XY轴),缺点布局单一性,手机尺寸变更适应性差
子控件重要属性如下:
android:layout_x //子控件的X轴位置
android:layout_y //子控件的Y轴位置
总结:绝对布局适应性最差,感觉应该会使用在特种机型上。
表格布局:TableLayout,感觉像excel 以单元格的形式控制子控件
常用属性如下:
索引是从0开始的
collapseColumns="0,2" //隐藏第1列和第三列
shrinkColumns="3" //如果子类控件里的内容超出了容器,按照索引3就是子类控件4的那个子类就会纵向收缩内容
stretchColumns="2" //代表第三列的子控件可以铺满剩余空间,如果所有索引值都输上或者直接输"*"会平均铺满
直接设置在子类控件里的属性:
android:layout_column="1" //代表该控件显示在第二列
android:layout_span="2" //该控件占两列
在实施中,如果设置这两个属性的子类控件位于索引值0,后面的会被挤出容器
总结:表格布局应该是用于拨号界面或者类似于计算器的界面。
明天计划的事情:明天学习一下Intent功能,看看任务1需要怎么做
遇到的问题:五布局中,感觉线性布局最好理解,相对布局花了我很多时间= =,今天本来想看看任务1的,但是下载的资源是PSD文件,
我木有可以打开这个的程序,热点下PS太慢了。。下了一下午还没下好。
收获:学了五种布局方式,每学到一种,就联想到了一些用过的应用,希望以后不要忘记把,尽量把学过的笔记写全一点,以后自己看看也方便
今天还不错,早上买的猪蹄,炖了一下午0.0
评论