Android 基本布局

在android中,一个美观、操作简单的界面由多个控件组成。多个控件要有序的摆放在界面上,需要借助android布局来实现。布局一种可以放置多个控件的容器,他可以按照一定的规律调整内部控件的相对位置,来使你的界面更精美、易用。我们经常用到的布局大概有四类:

        1.LinearLayout

        2.RelativeLayout

        3.GridLayout

        4.TableLayout

Android LinearLayout

LinearLayout又称作线性布局,又是一种非常常用的线性布局。正如它名字所描述一样,这个布局会将它所包含的控件在线性方向上依次呈现。在LinearLayout布局里面的控件都是在一个方向上线性排列,要么是水平horizontally,要么是竖直vertically。

      那么,LinearLayout的方向设计只有2种:

  • Vertical
  • Horizontal

       默认的方向是水平的Horizontal。

打开我们的页面布局的xml文件,

 

技术分享

输入以下代码:

<?xml version="1.0" encoding="utf-8"?>
<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/btn1"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="button 1"/>
    
    <Button 
        android:id="@+id/btn2"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="button 2"/>
    
    <Button 
        android:id="@+id/btn3"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="button 3"/>
    
    

</LinearLayout>

LinearLayout可以有2种显示方式,通过设置LinearLayout的android:orientation来设置。上面这种是水平对其的,显示出来的效果如下:

技术分享

你可以更改android:orientation为android:orientation="vertical";就可以显示如下内容:

技术分享

代码可以在这里下载:androidLinearLayout Sample Code

 

Android RelativeLayout

RelativeLayout又称作相对布局,也是一种非常常用的布局。就像它的名字一样,这种布局方式更加灵活,他可以通过相对定位的方式让控件出现在布局的任何位置。正因为如此,RelativeLayout的属性非常多,我们需要在理解的基础上去记忆。RelativeLayout可以把一个控件摆放在另一个控件的左边(toLeftOf),右边(toRightOf),上面(above),下面(below)都是相对位置;也可以与其父布局的相对位置摆放,中间,水平,竖直,或者是任意父布局的边对齐。

与父布局的相对位置

layout_alignParentXXX-这是子控件和父布局的几种摆放位置。主要有四种值:

         1.layout_alignParentLeft(左边对齐)

         2.layout_alignParentRight(右边对齐)

         3.layout_alignParentTop(顶部对齐)

         4.layout_alignParentBottom(底部对齐)

除了这四种基本的摆放布局之外,还有一些组合的,比如像laytout_alignParentStart、layout_alignParentEnd,layout_alignParentStart就相当于layout_alignParentLeft和layout_alignParentTop,layout_alignParentEnd就不用说了吧!

还有就是layout_centerInParent,就是把控件放在父布局的中间位置。

与兄弟控件的相对位置

layout_toXXXOf就是说与兄弟控件以何种方式对齐的,XXX代表了Left,Right,Start,End。当然在对齐的时候你需要指明是与那个控件对齐的,每个控件都有一个ID,你只需要指明ID就行了,比如:

      android:layout_toLeftOf="@id/text"就是放在ID位text的左边。

还有俩种就是:layout_above(上面)和layout_below(下面)。

新建一个工程在布局文件里面输入以下代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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=".MainActivity" >
    
    <!-- 放在父布局的左上角 -->
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="btn1" />
    
    <!-- 放在父布局的右上角 -->
     <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn2"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="btn2" />
     
     <!-- 放在父布局的左下角 -->
     <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn3"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:text="btn3" />
     
     <!-- 放在父布局的右下角 -->
      <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn4"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:text="btn4" />

      <!-- 放在父布局的中间 -->
      <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/pic"
        android:src="@drawable/ic_launcher"
        android:layout_centerInParent = "true"/>
      
      <!-- 放在pic的下面 -->
      <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="below"
        android:layout_below="@id/pic"
        android:layout_centerInParent = "true"/>
    
      <!-- 放在pic的上面 -->
      <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="above"
        android:layout_above="@id/pic"
        android:layout_centerInParent = "true"/>
    
      <!-- 放在pic的左边 -->
      <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="left"
        android:layout_toLeftOf="@id/pic"
        android:layout_centerInParent = "true"/>
    
      <!-- 放在pic的右边 -->
      <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="right"
        android:layout_toRightOf="@id/pic"
        android:layout_centerInParent = "true"/>

</RelativeLayout>

就会得到这样的布局:

技术分享

代码可以在这里下载:RelativeLayout Sample Code

Android GirdLayout

GirdLayout就是一种一个表格的方式呈现布局。这个比较简单,可以用来做一个九宫格解锁。

新建一个项目,在布局xml里面写入如下代码:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnCount="3"
    android:gravity="center"
    android:orientation="horizontal"
    android:rowCount="3" >
   
    <TextView android:text="1" android:padding="5dp"/>
    <TextView android:text="2" android:padding="5dp"/>
    <TextView android:text="3" android:padding="5dp"/>
    <TextView android:text="4" android:padding="5dp"/>
    <TextView android:text="5" android:padding="5dp"/>
    <TextView android:text="6" android:padding="5dp"/>
    <TextView android:text="7" android:padding="5dp"/>
    <TextView android:text="8" android:padding="5dp"/>
    <TextView android:text="9" android:padding="5dp"/>
</GridLayout>

就会得到如下的布局:

技术分享

代码可以在这里下载:GridLayout Sample Code

Android TableLayout

就像这个名字一样,TableLayout允许我们用表格的方式来排列控件,但是这种布局不很常用。大概了解一下就行了。既然是表格那就一定有行和列,在设计表格的时候我们尽量应该让每一行都拥有相同的列数,这样的表格是最简单的。但是在实际中,总不是我们所想的那样,所以当某一行一定要有不相等的列数时,就可以通过合并单元格方式来应对。

新建一个项目,在布局xml文件中输入如下代码:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="1"
    tools:context=".MainActivity" >

    <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="Passwd"/>
        <EditText
            android:id="@+id/passwd"
            android:layout_height="wrap_content"
            android:inputType="textPassword"/>
    </TableRow>
    <TableRow>
        <Button
            android:id="@+id/login"
            android:layout_height="wrap_content"
            android:text="login"/>     
    </TableRow>

</TableLayout>

就会得到如下的布局:

技术分享

代码这里下载:TableLayout Sample Code

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。