详解Android四种基本布局

原创 2015年11月21日 20:30:07

LinearLayout

LinearLayout又称作线性布局,是一种非常常用的布局。

该布局有一个专属属性android:orientation,这个属性有两个选择vertical和horizontal,代表着线性排列的规律。

演示:

vertical


horizonal


如果LinearLayout 的排列方向是 horizontal,内部的控件就绝对不能将宽度指定为match_parent,因为这样的话单独一个控件就会将整个水平方向占满,其他的控件就没有可放置的位置了。同样的道理,如果LinearLayout 的排列方向是 vertical,内部的控件就不能将高度指定为match_parent

gravity和layout_gravity的区别就是gravity是指当前空间内部的内容的排列方式,而后者则是指当前控件相对于父布局的的排列方式


示例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:text="Button 1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Button 2" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="Button 3" />
</LinearLayout>



android:layout_weight是指所设置的控件对剩余空间的权重(权重越大,所占空间越大)

示例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/input_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Type something"
/>
<Button
android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send"
/>
</LinearLayout>


注意这里我们将edittext的权重设为1,而width设为0只是一个规范化写法,因为send的width是wrapcontent,所以这一行的剩余空间分到所有权重之和(1)上,1/1即为edittext所占比例。

RelativeLayout
RelativeLayout 又称作相对布局,也是一种非常常用的布局。
就和名字一样,这种布局内的控件排列全部按照相对的父布局或其它子控件等

相对于父布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Button 1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="Button 2" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Button 3" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="Button 4" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="Button 5" />
</RelativeLayout>

相对于子控件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Button 3" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/button3"
android:layout_toLeftOf="@id/button3"
android:text="Button 1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/button3"
android:layout_toRightOf="@id/button3"
android:text="Button 2" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/button3"
android:layout_toLeftOf="@id/button3"
android:text="Button 4" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/button3"
android:layout_toRightOf="@id/button3"
android:text="Button 5" />
</RelativeLayout>


RelativeLayout中还有另外一组相对于控件进行定位的属性,android:layout_alignLeft表示让一个控件的左边缘和另一个控件的左边缘对齐,android:layout_alignRight表示让一个控件的右边缘和另一个控件的右边缘对齐,还有android:layout_alignTop android:layout_
alignBottom


FrameLayout

这种布局没有任何的定位方式,所有的控件都会摆放在布局的左上角,该布局类型主要运用于碎片处理。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
/>
</FrameLayout>



TableLayout
TableLayout允许我们使用表格的方式来排列控件
设计一个登录界面,允许用户输入账号密码后登录
<pre name="code" class="java"><TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" 
android:stretchColumns="1">
<TableRow>
<TextView
android:layout_height="wrap_content"
android:text="Account:" />
<EditText
android:id="@+id/account"
android:layout_height="wrap_content"
android:hint="Input your account" />
</TableRow>
<TableRow>
<TextView
android:layout_height="wrap_content"
android:text="Password:" />
<EditText
android:id="@+id/password"
android:layout_height="wrap_content"
android:inputType="textPassword" />
</TableRow>
<TableRow>
<Button
android:id="@+id/login"
android:layout_height="wrap_content"
android:layout_span="2"
android:text="Login" />
</TableRow>
</TableLayout>




TableLayout 中每加入一个 TableRow 就表示在表格中添加了一行,然后在 TableRow中每加入一个控件,就表示在该行中加入了一列,TableRow中的控件是不能指定宽度的。
使用android:layout_span="2"让登录按钮占据两列的空间,android:stretchColumns="1"使得第二个控件自动拉伸并占慢剩余空间。

版权声明:本文为博主原创文章,未经博主允许不得转载。

【转】MACHINE_START分析

本文转自: http://blog.sina.com.cn/s/blog_4ae5be930100nyfl.html 在友善mini2440提供的linux2.6.32.2内核中,有如下定义: MAC...

和菜鸟一起学android4.0.3源码之鼠标光标绘制简略版

搞定了android4.0.3的触摸屏的适配后(其实只要驱动没有什么问题,加个配置文件就很容易搞定了),新的任务就下来了,就是要寻找android4.0.3中的鼠标是如何绘画的,哪里createSur...

Android开发之基本控件和详解四种布局方式

转自http://www.cnblogs.com/ludashi/p/4883915. Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动。给控件添加事件也有接口...

android四种基本布局之LinearLayout

LinearLayout(线性布局): LinearLayout 又称作线性布局,是一种非常常用的布局,android:orientation用于指定LinearLayout中控件呈现的方向 ver...

【安卓基础】02Android四种基本布局

四种基本布局:线性布局、相对布局、帧布局以及百分比布局。

Android 四种基本布局LinearLayout、RelativeLayout、FrameLayout、TableLayout

LinearLayout 我们称其为线性布局,也是我们最常用的布局。此布局会把它所包含的控件在线性方向上依次排列。那决定是水平排列还是垂直排列就要依靠android:orientation属性来决...

[android]_[四种基本布局]

1.LinearLayout LinearLayout 又称作线性布局,是一种非常常用的布局。正如它名字所描述的一样,这个布局会将它所包含的控件在线性方向上依次排列。相信你之前也已经注意到了,我们在上...

Android 中的四种基本布局

LinearLayout LinearLayout 又称作线性布局,是一种非常常用的布局。正如它的名字所秒速的一样,这个布局会将它所包含的控件在线性方向上依次排列。 这里注意的是:如果Li...

Android四种基本布局

一、LinearLayoutorientation取值 vertical:垂直 horizontal:水平
  • mrosrry
  • mrosrry
  • 2015年05月25日 21:19
  • 69

【Android学习】界面设计的四种基本布局

基本布局的理解
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:详解Android四种基本布局
举报原因:
原因补充:

(最多只允许输入30个字)