android 基本布局(RelativeLayout、TableLayout等)使用方法及各种属性
最后更新 2021-02-22 10:20 星期一 所属:
安卓教程 浏览:936
文中详细介绍 Android 页面开发设计中最基础的四种合理布局LinearLayout、RelativeLayout、FrameLayout、TableLayout 的操作方法及这四种合理布局中常见的特性。
- LinearLayout
线形合理布局
,合理布局中室内空间呈线形排序- RelativeLayout
相对性合理布局
,根据相对定位的方法,操纵控制部位- FrameLayout
帧合理布局
,非常简单的合理布局,全部控制置放左上方- TableLayout
报表合理布局
,以队伍方法操纵控制部位
1.LinearLayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="竖直1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="竖直2" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="水准1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="水准2" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:text="水准上两端对齐" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="水准垂直居中" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="水准下两端对齐" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal">
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:hint="输入您..."/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="递交" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal">
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="输入您..."/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="递交" />
</LinearLayout>
</LinearLayout>
- orientation:horizontal(水准)/vertical(竖直),表明线形排序的方位。
- layout_width/layout_height:原素的总宽与高宽比
- layout_gravity:top/bottom/center/left/right/etc,表明当今原素相对性父原素的两端对齐方法,多种多样两端对齐方法用“|”分隔,右上两端对齐:
top|right
。- layout_weight:占有室内空间的占比,比如原素A和B,A设定为1,B设定为3, 原素A、B各自占室内空间的1/4、3/4,这时原素总宽不由自主layout_width决策,设定为
0dp
是较为标准的书写。- layout_weight 若原素A设定为1,原素B不设定,将layout_width设定为实际的值或wrap_content,那麼原素B的总宽由layout_width决策,原素A将布满显示屏剩余的室内空间。
2.RelativeLayout
<LinearLayout ...>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="300dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:text="我还在左下方"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="我还在正中间"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="我还在右上方"/>
</RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="300dp">
<Button
android:id="@ id/button_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="参考按键"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/button_2"
android:layout_toRightOf="@id/button_2"
android:text="我还在右上方"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/button_2"
android:layout_toLeftOf="@id/button_2"
android:text="我还在左下方"/>
</RelativeLayout>
</LinearLayout>
下列特性数值true/false
- layout_centerHorizontal/layout_centerVertical: 水平居中、垂直居中
- layout_centerInparent: 相对性父原素竖直&水平居中
- layout_alignParentBottom: 原素下界限和父原素下界限两端对齐
- layout_alignParentLeft: 左界限两端对齐
- layout_alignParentRight: 右界限两端对齐
- layout_alignParentTop: 上界限两端对齐
下列特性数值控制id
- layout_above/layout_below: 在某原素的上边/下边
- layout_toLeftOf/layout_toRightOf: 在某原素的左侧/右侧
- layout_alignTop/layout_alignBottom: 原素上(下)界限与某原素上(下)界限两端对齐
- layout_alignLeft/layout_alignRight: 左(右)界限两端对齐
3.FrameLayout
全部原素都置放在合理布局的左上方
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是一个按键"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是一个文本框"/>
</FrameLayout>
4.TableLayout
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow>
<TextView
android:layout_height="wrap_content"
android:text="电子邮箱"/>
<EditText
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="请请输入的电子邮箱" />
</TableRow>
<TableRow>
<TextView
android:layout_height="wrap_content"
android:text="登陆密码"/>
<EditText
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="请输入密码" />
</TableRow>
<TableRow>
<Button
android:layout_height="wrap_content"
android:layout_span="2"
android:text="申请注册" />
</TableRow>
</TableLayout>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1">
...
</TableLayout>
- TableRow: 意味着报表合理布局的一行,内行人一个原素意味着一列。
- layout_span: 合并单元格,设定为2,意味着该原素占有2列室内空间。
- stretchColumns: TableRow中没法特定室内空间总宽,那麼必须采用该特性,设定为1,表明拉申第二列(0为第一列)与显示屏一样宽,实际效果如TableLayout的第二张图。
5.自定合理布局
Android中,合理布局下能够置放控制,还可以置放子合理布局。假如子合理布局內容比较单独且常常应用,比如菜单栏,或是合理布局非常复杂,此刻能够考虑到应用自定合理布局的方式导进。方式非常简单。
- 新创建一个合理布局文档,比如
example.xml
- 在父合理布局中引进:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/example"/>
</LinearLayout>