Android布局管理器
来源:互联网 发布:python 多元高斯分布 编辑:程序博客网 时间:2024/05/16 07:18
在android程序中,我们需要为每一个组件在容器中设定一个位置和大小。而在很多场合我们都很难确定其位置和大小。布局管理器提供了在android程序中更为方便也更为有效的控制方法。
常用的android布局管理器有线性布局管理器(LinearLayout)、绝对布局管理器(AbsoluteLayout)、相对布局管理器(RelativeLayout)、框架布局管理器(FrameLayout)、表格布局管理器(TableLayout)。
线性布局管理器(LinearLayout):
该布局管理器表示,放入其中的所有组件按着水平(horizontal)或垂直(vertical)排列,(默认horizontal)就算超出显示器显示范围也不换行。
比如在LinearLayout中放入五个按钮:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.amia.layoutexample.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第一个"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第二个"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第三个"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第四个"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第五个"/></LinearLayout>
在程序中运行的结果是这样的:
可以看到第五个按钮已经超出屏幕,并且没有换行,所以无法显示。
LinearLayout是垂直排列还是水平排列可以在android:orientation中设置:
android:orientation="vertical"
可以使其其变为垂直排列:
绝对布局管理器(AbsoluteLayout):
放置在其中的任何一个组件都要指明其精确坐标。不过在新版本的sdk中已经过期(本人用的是API21),不再使用。
相对布局管理器(RelativeLayout):
RelativeLayout是按组件的相对位置来布局。简单来说就是可以设定一个组件在另一个组件的上还是下,左还是右。
如要在屏幕中间设置一个按钮,其周围各放置一个按钮,可以在xml中这样写:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.amia.layoutexample.MainActivity"> <Button android:layout_centerInParent="true" android:id="@+id/but1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="中央"/> <Button android:layout_alignRight="@id/but1" android:layout_above="@id/but1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="上方"/> <Button android:layout_alignRight="@id/but1" android:layout_below="@id/but1" android:text="下方" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_alignBottom="@id/but1" android:layout_toLeftOf="@id/but1" android:text="左方" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_alignTop="@id/but1" android:text="右方" android:layout_toRightOf="@id/but1" android:layout_width="wrap_content" android:layout_height="wrap_content" /></RelativeLayout>
layout_centerInParent是指定其是否放置在容器的中央位置;
layout_alignRight表示该组件和指定组件的右边界对齐;
layout_above表示该组件在指定组件的上方;
layout_below表示该组件在指定组件的下方;
layout_alignButtom表示该组件与指定组件的下边界对齐;
layout_toLeftOf表示该组件在指定组件的左方;
layout_toRightOf表示该组件在指定组件的右方;
layout_alignTop表示该组件在与指定组件的上边界对齐。
结果如下:
框架布局管理器(FrameLayout)
允许组件重叠的布局管理器。默认情况从(0,0)开始布局。由于没加入一个组件都会创建一个空白区域,通常称为一帧,故又被称为帧布局管理器。
假设我们需要在界面中放置几个重叠的组件,xml代码可以这么写:
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.amia.layoutexample.MainActivity"> <Button android:background="#000000" android:id="@+id/but1" android:layout_width="300dp" android:layout_height="300dp" android:layout_gravity="center" /> <Button android:background="#00FF00" android:layout_gravity="center" android:layout_width="200dp" android:layout_height="200dp" /> <Button android:background="#0000FF" android:layout_marginTop="50dp" android:layout_width="100dp" android:layout_height="100dp" /></FrameLayout>
layout_gravity表示其相对于其容器的位置,指定为center表示它在该布局管理器的中央;同时也可以利用距离其容器各个边的距离来指定其位置,如layout_marginTop表示该组件和容器顶部的距离。
效果如下:
表格布局管理器(TableLayout):
表格布局管理可以将容器分割为许多子部分(如同表格一样),在”表格“的指定位置放置需要的组件。
比如,我们在第一行放置一个输入用户名的输入框,第二行放置一个确定按钮,代码可以这么写:
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.amia.layoutexample.MainActivity"> <TableRow android:id="@+id/firstRow" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:text="用户名:" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <EditText android:layout_width="250dp" android:layout_height="wrap_content" android:text="输入用户名:" /> </TableRow> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/but1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="确定" /> </TableRow></TableLayout>
每一个TableRow表示一行,每一行中可以放置一个或多个组件。效果如下:
- android 布局管理器
- Android布局管理器详解
- Android布局管理器
- Android-布局管理器
- Android布局管理器
- android布局管理器学习
- Android中的布局管理器
- android 布局管理器
- android布局管理器
- 关于android布局管理器
- Android布局管理器介绍
- android布局管理器
- android布局管理器
- Android布局管理器浅析
- Android 布局管理器
- Android布局管理器
- Android布局管理器
- Android 布局管理器学习
- 蓝桥杯 圆的面积并控制输出格式
- UVa11636 Hello World!
- 第17章 控件模版(1)——模版的创建与使用
- I/O 多路复用之select、poll、epoll实现原理及对比总结
- Java NIO 文件IO-内存映射文件MappedByteBuffer与zerocopy
- Android布局管理器
- C# 数组的五种声明方式
- c#冒泡排序
- python range 范围问题
- HDU-2030 汉字统计(水题)
- 【设计模式】—-(17)中介者模式(行为型)
- linux 用户操作功能与权限
- Spring bean管理【基于注解】
- 51 NOD 1119 机器人走方格 V2(Lucas)