`
百合不是茶
  • 浏览: 356167 次
社区版块
存档分类
最新评论
阅读更多

Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。其中我用的最多的就是线性布局和表格布局

 

一:LinearLayout(线性布局)

       LinearLayout 线性布局有两种,分别是水平线性布局和垂直线性布局,LinearLayout属性中android:orientation为设置线性布局当其="vertical"时,为 垂直线性布局,当其="horizontal"时,为水平线性布局,不管是水平还是垂直线性布局一行(列)只能放置一个控件

 

    

 探讨线性布局的重要特性和属性

  现在让我们来看看有助于配置线性布局和它的子控件的一些重要属性。

  一些特别的属性应用到线性布局。你会使用到线性布局最重要的属性包括:

  • 方向属性(必须),取值可以是vertical或horizontal(类:LinearLayout)
  • 对齐属性(可选),控制子控件在线性布局中如何排列和显示(类:LinearLayout)
  • layout_weight属性(可选,应用到每个子控件)指定每个子控件在父级线性布局中的相对重要性(类:LinearLayout.LayoutParams)

  此外,通用的ViewGroup-style属性也应用到线性布局。这些属性包括:

  • 通用布局参数如layout_height (必须)和layout_width (必须) (类:ViewGroup.LayoutParams)
  • 边距布局参数如margin_top,margin_left,margin_right和margin_bottom (类:ViewGroup. MarginLayoutParams)
  • 布局参数如layout_height和layout_width (类:ViewGroup.LayoutParams)

 

垂直线性布局;android:orientation="vertical" 

    

<?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="vertical" >  
  
   <EditText   
.        android:layout_width="100dp"  
        android:layout_height="wrap_content"  
        
        />  
     
   <Button   
       android:layout_width="100dp"  
       android:layout_height="wrap_content"  
       android:text="Button1"/>  
  
   <Button   
        android:layout_width="100dp"  
     android:layout_height="wrap_content"  
       android:text="button2"/>  
 
</LinearLayout>  

 

 

   

 

 

水平线性布局;

    

<?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" >   
  
   <EditText   
.        android:layout_width="100dp"  
        android:layout_height="wrap_content"  
        
        />  
     
   <Button   
       android:layout_width="100dp"  
       android:layout_height="wrap_content"  
       android:text="Button1"/>  
  
   <Button   
        android:layout_width="100dp"  
     android:layout_height="wrap_content"  
       android:text="button2"/>  
 
</LinearLayout>  

 

 

 

 线性布局的嵌套中需要用到的就是权重,也就是每个大的LinearLayout所占屏幕的大小  layout_weight

 

LinearLayout有两个非常相似的属性:

android:gravity与android:layout_gravity。

android:gravity 属性是对该view中内容的限定.比如一个button 上面的text. 你可以设置该text 相对于view的靠左,靠右等位置.

android:layout_gravity是用来设置该view相对与父view 的位置.比如一个button 在linearlayout里,你想把该button放在linearlayout里靠左、靠右等位置就可以通过该属性设置. 

即android:gravity用于设置View中内容相对于View组件的对齐方式,而android:layout_gravity用于设置View组件相对于Container的对齐方式。

 

 

 

二:FrameLayout(单帧布局)

  框架布局是最简单的布局形式。所有添加到这个布局中的视图都以层叠的方式显示。第一个添加的控件被放在最底层,最后一个添加到框架布局中的视图显示在最顶层,上一层的控件会覆盖下一层的控件。这种显示方式有些类似于堆栈  

     

例子:

 

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
  xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" > 
 
    <ImageView 
        android:id="@+id/image" 
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent" 
        android:scaleType="center" 
        android:src="@drawable/candle" 
        /> 
    <TextView 
        android:id="@+id/text1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:textColor="#00ff00" 
        android:text="@string/hello" 
        /> 
    <Button 
        android:id="@+id/start" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="bottom" 
        android:text="Start" 
        /> 
</FrameLayout> 

  

 

 



 

三:RelativeLayout(相对布局)

          相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。它灵活性大很多,当然属性也多,操作难度也大,RelativeLayout内的组件可以指定组件的显示位置

       

     RelativeLayout的常用属性;

 


第一类:属性值为true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
第二类:属性值必须为id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离

EditText的android:hint
设置EditText为空时输入框内的提示信息。
android:gravity 
android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity="right"则button上面的文字靠右
android:layout_gravity
android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.以button为例,android:layout_gravity="right"则button靠右

android:layout_alignParentRight
使当前控件的右端和父控件的右端对齐。这里属性值只能为true或false,默认false。
android:scaleType:
android:scaleType是控制图片如何resized/moved来匹对ImageView的size。ImageView.ScaleType / android:scaleType值的意义区别:
CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示
FIT_END / fitEnd 把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
FIT_START / fitStart 把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
FIT_XY / fitXY 把图片不按比例扩大/缩小到View的大小显示
MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。

 

 

相对布局的例子;

      

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
  xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_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:layout_marginLeft="20dp"                              //设置左间距20dp  
       android:layout_marginTop="20dp"                               //设置上间距20dp  
       android:text="第一个按钮" /> 


<Button  
        android:id="@+id/button2"  
        android:layout_width="wrap_content"              //宽度匹配内容  
        android:layout_height="wrap_content"              //高度匹配内容  
        android:layout_below="@+id/button1"           //位置在第一个按钮的下面  
        android:layout_toRightOf="@+id/button1"         //与第一个按钮的右边对齐  
        android:layout_marginTop="15dp"                            //设置上间距15dp  
     android:text="第二个按钮" />  

<Button  
    android:id="@+id/button3"  
    android:layout_width="wrap_content"              //宽度匹配内容  
    android:layout_height="wrap_content"              //高度匹配内容  
    android:layout_below="@+id/button2"            //位置在第二个按钮的下面  
    android:layout_toLeftOf="@+id/button2"           //与第二个按钮的左边对齐  
    android:layout_marginTop="15dp"                //设置上间距15dp          
    android:text="第三个按钮" />  


</RelativeLayout >

 

 

 

 

 

四:AbsoluteLayout(绝对布局)android已经很少使用,用FrameLayout来替代

  AbsoluteLayout是绝对布局管理器,指的是指定组件的左上角绝对坐标来指定组件的布局

    

 绝对布局常用的属性;android:layout_x="0px" android:layout_y="0px"设置x ,y的位置

 

例子:

 

<?xml version="1.0" encoding="utf-8"?>

<AbsoluteLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical" android:layout_width="fill_parent"

    android:layout_height="fill_parent">

 

    <Button android:layout_width="wrap_content"

        android:layout_height="wrap_content" android:text="按钮1"

        android:layout_x="0px" android:layout_y="0px" />

    <Button android:layout_width="wrap_content"

        android:layout_height="wrap_content" android:text="按钮2"

        android:layout_x="20px" android:layout_y="20px" />

    <Button android:layout_width="wrap_content"

        android:layout_height="wrap_content" android:text="按钮3"

        android:layout_x="40px" android:layout_y="40px" />

    <Button android:layout_width="wrap_content"

        android:layout_height="wrap_content" android:text="按钮4"

        android:layout_x="60px" android:layout_y="60px" />

</AbsoluteLayout>

 

 

 

 

 

五:TableLayout(表格布局)

   表格布局和html中的Table相似,学习的时候可以联系起来,容易理解,

   

TableLayout属性:

  android:collapseColumns:将TableLayout里面指定的列隐藏,隐藏多行需要用","隔开

  android:stretchColumns:设置指定的列为可伸展的,填满剩下的多余空白空间,填满多行需要用","  隔开  

  android:shrinkColumns:设置指定的列为可收缩的列。

   使用率最高的属性:

 

  android:layout_colum:设置该控件在TableRow中指定的列。

  android:layout_span:设置该控件所跨越的列数。

 

表格布局的例子:  网上找到的例子  蛮经典的 

 

 <LinearLayout 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:orientation="vertical"
      tools:context=".AndroidTableLayoutActivity" >
   
       <!-- 定义第一个表格,指定第2列允许收缩,第3列允许拉伸 -->
   
     <TableLayout
          android:id="@+id/tablelayout01"
        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:shrinkColumns="1"
        android:stretchColumns="2" >
 
         <!-- 直接添加按钮,自己占用一行 -->
 
         <Button
             android:id="@+id/btn01"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="独自一行" >
         </Button>
 
         <TableRow>
 
             <Button
                 android:id="@+id/btn02"
                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="普通" >
             </Button>
 
             <Button
                 android:id="@+id/btn03"
                 android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="允许被收缩允许被收缩允许被收缩允许被收缩" >
            </Button>

            <Button
                android:id="@+id/btn04"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                 android:text="允许被拉伸" >
             </Button>
       </TableRow>
     </TableLayout>
     <!-- 定义第2个表格,指定第2列隐藏 -->
 
     <TableLayout
         android:id="@+id/tablelayout02"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:collapseColumns="1" >
 
         <TableRow>
 
             <Button
                 android:id="@+id/btn05"
                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="普通" >
             </Button>
 
             <Button
                 android:id="@+id/btn06"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="被隐藏列" >
             </Button>
 
             <Button
                 android:id="@+id/btn07"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                android:text="允许被拉伸" >
            </Button>
         </TableRow>
     </TableLayout>
     <!-- 定义第3个表格,指定第2列填满空白-->
 
     <TableLayout
         android:id="@+id/tablelayout03"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:stretchColumns="1"
          >
 
        <TableRow>
 
             <Button
                 android:id="@+id/btn08"
                 android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                 android:text="普通" >
             </Button>
 
             <Button
                android:id="@+id/btn09"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="填满剩余空白" >
            </Button>
         </TableRow>
     </TableLayout>
    <!-- 定义第3个表格,指定第2列横跨2列-->

     <TableLayout
         android:id="@+id/tablelayout04"
         android:layout_width="match_parent"
        android:layout_height="wrap_content"
          >
 
         <TableRow>
 
             <Button
                 android:id="@+id/btn10"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="普通" >
            </Button>
             
            <Button
                android:id="@+id/btn11"
                android:layout_column="2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                 android:text="填满剩余空白" >
             </Button>
        </TableRow>
    </TableLayout>
</LinearLayout>

 

 

 

 

 

 

  • 大小: 6.7 KB
  • 大小: 7.4 KB
  • 大小: 15.3 KB
  • 大小: 12.1 KB
  • 大小: 9.9 KB
  • 大小: 17.5 KB
0
0
分享到:
评论

相关推荐

    android 五大布局详解

    "android 五大布局详解" Android 中的五大布局对象是指 FrameLayout、LinearLayout、AbsoluteLayout、RelativeLayout 和 TableLayout。这些布局对象是 Android 应用程序开发中最基本和最常用的布局方式。 ...

    Android基础教程(二)之五大布局对象

    ### Android五大布局详解 在Android应用开发过程中,布局设计至关重要,它决定了用户界面(UI)的外观与交互方式。本文将详细介绍Android五大基本布局对象:`FrameLayout`(框架布局)、`LinearLayout`(线性布局)、...

    Android 五大布局方式详解

    Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件。 帧布局(FrameLayout):组件从屏幕左上方布局组件。 表格布局(TableLayout):按照行列方式布局组件。 ...

    android-五大布局&单位详解

    本文将深入探讨Android的五大布局——线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)、表格布局(TableLayout)以及约束布局(ConstraintLayout),并详细解析它们的工作原理和使用...

    android笔记安卓基础知识 四大组件、六大布局、五大存储

    #### 二、六大布局方式详解 Android支持六种常用的布局方式: 1. **LinearLayout(线性布局)**:按水平或垂直方向排列子视图,是最基础的布局方式之一。 2. **FrameLayout(框架布局)**:将所有子视图堆叠在...

    Android_布局详解【图文】

    Android布局详解【图文】 在Android应用开发中,布局(Layout)是构建用户界面的基础,它决定了各个组件在屏幕上的排列方式和位置。本篇将详细讲解Android中的五种主要布局:线性布局(Linear Layout)、相对布局...

    Android布局控件之RelativeLayout详解

    ### Android布局控件之RelativeLayout详解 #### 一、概述 在Android开发中,布局是非常重要的一环,良好的布局设计能够使界面美观且适应各种屏幕尺寸。`RelativeLayout`作为Android提供的几种基本布局之一,通过...

    android布局属性详解

    ### Android布局属性详解 在Android应用开发中,布局是用户界面设计的核心部分,它决定了控件的排列方式和外观效果。本篇文章将详细介绍Android中常用的布局属性及其应用场景,帮助开发者更好地掌握布局技巧。 ###...

    Android五大布局与实际应用详解

    线性布局(LinearLayout)是Android开发中最基础也是最常用的布局之一,它允许将子视图按照垂直或水平的方向排列。通过设置`android:orientation`...总的来说,理解并熟练掌握这五大布局对于Android应用开发至关重要。

    Android约束布局ConstraintLayout使用完全解析

    在Android开发中,布局管理器是构建用户界面的关键部分,其中`ConstraintLayout`是一个非常重要的布局工具,尤其在创建复杂的、响应式的用户界面时。本篇文章将深入解析`ConstraintLayout`的使用,帮助开发者充分...

    android的layout布局种类

    Android 布局种类详解 Android 布局种类是 Android 应用程序中不可或缺的一部分,它们决定了应用程序的用户界面和用户体验。Android 提供了多种布局种类,每种布局种类都有其特点和用途。在这篇文章中,我们将详细...

    Android布局详解

    ### Android布局详解 #### 一、概述 在Android应用程序开发中,布局是构建用户界面的基础。良好的布局设计能够显著提升用户体验。本文将详细介绍Android中的五种常见布局:FrameLayout(框架布局)、LinearLayout...

    android_UI布局设计.pdf

    ### Android UI布局设计详解 #### 一、引言 在Android应用开发中,用户界面(User Interface, UI)设计是至关重要的环节之一。良好的UI不仅能够提升用户体验,还能增强应用的吸引力。本文旨在深入探讨Android UI布局...

    Android核心技术与实例详解—Android布局管理器

    本章深入探讨了Android平台下的五种主要布局管理器:线性布局(LinearLayout)、表格布局(TableLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)以及绝对布局(AbsoluteLayout)。以下是对这些布局...

    《Android应用开发详解》PDF

    在基础环境准备完成后,书中将介绍Android应用程序的基本结构,包括Activity、Intent、Service、BroadcastReceiver和ContentProvider这五大组件。Activity是用户界面的主要载体,Intent用于组件间的通信,Service在...

Global site tag (gtag.js) - Google Analytics