android各种布局介绍

 

 常用排列方式

1、layout_width - 宽。

     fill_parent: 宽度跟着父元素走;

     wrap_content: 宽度跟着本身的内容走;直接指定一个 px 值来设置宽

2、layout_height - 高。

     fill_parent: 高度跟着父元素走;

     wrap_content: 高度跟着本身的内容走;直接指定一个 px 值来设置高

 

3、gravity - View组件的对齐方式。常用的有 top, bottom, left, right, center

       layout_gravity - 用于设置Container组件的对齐方式

       举个例子,我们可以通过设置android:gravity="center"来让EditText中的文字在EditText组件中居中显示;同时我们设置EditText的   android:layout_gravity="right"来让EditText组件在LinearLayout中居中显示。

4、 layout_weight - 将页面分块处理

 

     所有的view的layout_weight缺省值都是为0,意味着他们只在屏幕上占据它们需要显示的空间大小。activity根据这个View的比0大的layout_weight值来划分剩余的空间和其它Views定义的layout_weight也按比例进行空间的划分。

    给个例子:假设我们在水平行上有一个文本标签和两个文本编辑框view. 文本标签没有定义layout_weight 值,所以它将占据最小的需要提供的空间. 如果每个文本框view的layout_weight 都被设置为1, 在父布局中的剩余的宽度将被它们平分.如果一个文本view的layout_weight值为1,另外一个是2, 那么剩余空间的三分之一将给第一个文本框,三分之二将给第二个文本框。 

      例: 

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

    android:orientation="vertical" android:gravity="right"

    android:layout_width="fill_parent" android:layout_height="fill_parent">

 

一 LinearLayout  线形布局。

    orientation - 容器内元素的排列方式。

        vertical: 子元素们垂直排列;

        horizontal: 子元素们水平排列

 

二 FramLayout  层叠式布局 

  以左上角为起点,将FramLayout内的元素一层覆盖一层的显示。

 

 <FrameLayout android:layout_height="wrap_content"

        android:layout_width="fill_parent">

        <TextView android:layout_width="wrap_content"

            android:layout_height="wrap_content" android:text="FrameLayout">

        </TextView>

        <TextView android:layout_width="wrap_content"

            android:layout_height="wrap_content" android:text="Frame Layout">

        </TextView>

    </FrameLayout>

 

    <TextView android:layout_width="wrap_content"

        android:layout_height="wrap_content" android:text="@string/hello" />

三 TabLayout 表格式布局

     TableRow - 表格内的行,行内每一个元素算作一列

  • collapseColumns - 设置 TableLayout 内的 TableRow 中需要隐藏的列的列索引,多个用“,”隔开.

       以第0行为序,隐藏指定的列:把android:collapseColumns=0,2 意思是把第0和第2列隐藏 

  • stretchColumns - 设置 TableLayout 内的 TableRow 中需要拉伸(该列会拉伸到所有可用空间)的列的列索引,多个用“,”隔开
  • shrinkColumns - 设置 TableLayout 内的 TableRow 中需要收缩(为了使其他列不会被挤到屏幕外,此列会自动收缩)的列的列索引,多个用“,”隔开

 

   <TableLayout android:id="@+id/TableLayout01"

        android:layout_width="fill_parent" android:layout_height="wrap_content"

        android:collapseColumns="1">

        <TableRow android:id="@+id/TableRow01" android:layout_width="fill_parent"

            android:layout_height="wrap_content">

            <TextView android:layout_width="wrap_content"

                android:layout_weight="1" android:layout_height="wrap_content"

                android:text="11" />

            <TextView android:layout_width="wrap_content"

                android:layout_weight="1" android:layout_height="wrap_content"

                android:text="12" />

            <TextView android:layout_width="wrap_content"

                android:layout_weight="1" android:layout_height="wrap_content"

                android:text="13" />

        </TableRow>

        <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content"

            android:layout_height="wrap_content">

            <TextView android:layout_width="wrap_content"

                android:layout_height="wrap_content" android:text="21" />

        </TableRow>

    </TableLayout>

 

 

 四 绝对布局 AbsoluteLayout

     绝对定位AbsoluteLayout,又可以叫做坐标布局,可以直接指定子元素的绝对位置,这种布局简单直接,直观性强,但是由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差。

        layout_x - x 坐标。以左上角为顶点

        layout_y - y 坐标。以左上角为顶点

 在绝对定位中,如果子元素不设置layout_x和layout_y,那么它们的默认值是0,也就是说它会像在FrameLayout一样这个元素会出现在左上角。

例1:

<AbsoluteLayout android:layout_height="wrap_content"

        android:layout_width="fill_parent">

        <TextView android:layout_width="wrap_content"

            android:layout_height="wrap_content" android:text="AbsoluteLayout"

            android:layout_x="100px"

            android:layout_y="100px" />

    </AbsoluteLayout>

例2:

<?xml version=”1.0″ encoding=”utf-8″?>
<AbsoluteLayout android:id=”@+id/AbsoluteLayout01″
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
xmlns:android=”http://schemas.android.com/apk/res/android”
android:background=”#fff”>

<ImageView
android:src=”@drawable/android”
android:layout_y=”40dip”
android:layout_width=”wrap_content”
android:layout_x=”35dip”
android:id=”@+id/ImageView01″
android:layout_height=”wrap_content”>
</ImageView>
<TextView
android:layout_height=”wrap_content”
android:layout_width=”fill_parent”
android:id=”@+id/TextView01″
android:text=”Android2.2 学习指南”
android:textColor=”#0f0″
android:textSize=”28dip”
android:layout_y=”330dip”
android:layout_x=”35dip
“>
</TextView>
<TextView
android:layout_height=”wrap_content”
android:layout_width=”fill_parent”
android:id=”@+id/TextView02″
android:text=”图文并茂,理论清晰,操作性强”
android:textColor=”#333″
android:textSize=”18dip”
android:layout_y=”365dip”
android:layout_x=”35dip
“>
</TextView>
</AbsoluteLayout>

 

五 相对布局 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                   离某元素上边缘的距离

 例

  <RelativeLayout android:id="@+id/RelativeLayout01"

        android:layout_width="fill_parent" android:layout_height="fill_parent">

        <TextView android:layout_width="wrap_content" android:id="@+id/abc"

            android:layout_height="wrap_content" android:text="centerInParent=true"

            android:layout_centerInParent="true" />

        <TextView android:layout_width="wrap_content"

            android:layout_height="wrap_content" android:text="marginLeft=20px"

            android:layout_marginLeft="20px" />

        <TextView android:layout_width="wrap_content"

            android:layout_height="wrap_content" android:text="xxx"

            android:layout_below="@id/abc" android:layout_alignRight="@id/abc" />

    </RelativeLayout>

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值