Android 之 布局训练

 

1.线性布局 LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<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: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="org.example.linearlayout.MainActivity">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/list_view"
        />
</LinearLayout>
package org.example.linearlayout;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ArrayAdapter<String> items = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1);
        items.addAll("raspberry", "apple", "banana", "orange",
                "watermelon", "pear", "grape", "pineapple", "strawberry", "cherry", "mango");
        ListView listView = (ListView) findViewById(R.id.list_view);
        listView.setAdapter(items);

    }
}

2.表格布局

常用属性:

TableLayout属性(也叫全局属性):*代表所有列

android:shrinkColumns -------设置可收缩的列,(内容过多,则收缩,扩展到第二行,控件没布满TableLayout时不起作用)
android:stretchColumns ------设置可伸展的列,(有空白则填充)列可以同时具备stretchColumns及shrinkColumns属性
android:collapseColumns ------设置要隐藏的列(索引列从0开始)
 
android:layout_column -------该单元格在第几列显示
android:layout_span    -------该单元格占据列数,默认为1
例:
android:stretchColumns="0"           第0列可伸展
android:shrinkColumns="1,2"         第1,2列皆可收缩
android:collapseColumns="*"         隐藏所有行

表格布局示例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TableLayout android:id="@+id/Table1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:shrinkColumns="1"
        android:stretchColumns="2">

        <Button android:id="@+id/ok1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮占一行"/>

        <TableRow>
            <Button android:id="@+id/ok2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="普通按钮"/>
            <Button android:id="@+id/ok3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="收缩的按钮,可扩展到第二行"/>
            <Button android:id="@+id/ok4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="拉伸的按钮,可以拉伸"/>
        </TableRow>

        <TableRow>
            <Button android:id="@+id/ok6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="普通按钮"/>
            <Button android:id="@+id/ok7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="普通按钮"/>
            <Button android:id="@+id/ok8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="普通按钮"/>
        </TableRow>

        <TableRow>
            <Button
                android:id="@+id/ok13"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="普通按钮"
                />
            <Button
                android:id="@+id/ok14"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="拉伸的按钮,可以拉伸"
                />
        </TableRow>
    </TableLayout>
</LinearLayout>

3.帧布局

 常用属性:

android:foreground:设置改帧布局容器的前景图像 
android:foregroundGravity:设置前景图像显示的位置

代码:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/view1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right|bottom"
        android:width="160pt"
        android:height="160pt"
        android:background="#f00"/>
    <TextView
        android:id="@+id/view2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:width="140pt"
        android:height="140pt"
        android:background="#0f0"/>
    <TextView
        android:id="@+id/view3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:width="120pt"
        android:height="120pt"
        android:background="#00f"/>
    <TextView
        android:id="@+id/view4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:width="100pt"
        android:height="100pt"
        android:background="#ff0"/>
    <TextView
        android:id="@+id/view5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:width="80pt"
        android:height="80pt"
        android:background="#f0f"/>
    <TextView
        android:id="@+id/view6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:width="60pt"
        android:height="60pt"
        android:background="#0ff"/>
</FrameLayout>

4.相对布局

<!--属性值为具体像素值的属性,如30dip,40px-->
android:layout_marginBottom  离某元素底边缘的距离
android:layout_marginLeft    离某元素左边缘的距离
android:layout_marginRight   离某元素右边缘的距离
android:layout_marginTop     离某元素上边缘的距离
<!--设为其他组件ID的属性-->
android:layout_alignBottom 将该控件的底部边缘与给定ID控件的底部边缘对齐,并置于父窗口最左边,会覆盖最左边的控件 
android:layout_alignLeft 将该控件的左边缘与给定ID控件的左边缘对齐,并置于父窗口最上边,会覆盖最上边的控件 
android:layout_alignRight 将该控件的右边缘与给定ID控件的右边缘对齐,并置于父窗口最上边,会覆盖最上边的控件 
android:layout_alignTop 将给定控件的顶部边缘与给定ID控件的顶部对齐,并置于父窗口最左边,会覆盖最左边的控件
android:layout_above 将该控件的底部至于给定ID的控件之上,但不会左对齐,默认置于父窗口最左边,会覆盖最左边的控件 
android:layout_below 将该控件的顶部至于给定ID的控件之下,但不会左对齐,默认置于父窗口最左边,会覆盖最左边的控件 
android:layout_toLeftOf 将该控件的右边缘和给定ID的控件的左边缘对齐,默认置于父窗口最上面,会覆盖最上面的控件 
android:layout_toRightOf 将该控件的左边缘和给定ID的控件的右边缘对齐,默认置于父窗口最上面,会覆盖最上面的控件
android:layout_alignBaseline该控件的baseline和给定ID的控件的baseline对齐,并置于父窗口最左边,会覆盖最左边的控件
<!--设为boolean值得属性-->
android:layout_centerHorizonal="true"     水平居中
android:layout_centerVertical="true"      垂直居中
android:layout_centerInParent="true"      位于中央位置
android:layout_alignParentBottom ="true"  控件的底部和父控件的底部对齐,默认置于父窗口最左下,会覆盖最左下的控件 
android:layout_alignParentLeft="true"     控件的左边与父控件的左边对齐,默认置于父窗口最左上,会覆盖最左上的控件 
android:layout_alignParentRight="true"    控件的右边与父控件的右边对齐,默认置于父窗口最右上,会覆盖最右上的控件 
android:layout_alignParentTop="true"      控件的顶部与父控件的顶部对齐,默认置于父窗口最左上,会覆盖最左上的控件
android:layout_alignParentStart="true"    控制该组件和布局管理器开始对齐
android:layout_alignParentEnd="true"      控制该组件是否和布局管理器末端对齐。
android:layout_centerHorizontal="true"    控件将被至于水平方向的中央(默认父布局的上方)  
android:layout_centerInParent="true"      控件将被至于父控件水平方向和垂直方向的中央  
android:layout_centerVertical="true"      控件将被至于垂直方向的中央(默认父布局的左边)
android:layout_alignWithParentIfMissing="true"    如果对应的兄弟元素找不到的话就以父元素做参照物

 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/view1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:width="30pt"
        android:height="30pt"
        android:layout_marginBottom="10pt"
        android:layout_marginLeft="10pt"
        android:layout_marginRight="10pt"
        android:layout_marginTop="10pt"
        android:background="#f00"/>
    <TextView
        android:id="@+id/view2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/view1"
        android:layout_alignLeft="@id/view1"
        android:width="30pt"
        android:height="30pt"
        android:background="#0f0"/>
    <TextView
        android:id="@+id/view3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/view1"
        android:layout_alignLeft="@id/view1"
        android:width="30pt"
        android:height="30pt"
        android:background="#00f"/>
    <TextView
        android:id="@+id/view4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/view1"
        android:layout_alignTop="@id/view1"
        android:width="30pt"
        android:height="30pt"
        android:background="#ff0"/>
    <TextView
        android:id="@+id/view5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/view1"
        android:layout_alignTop="@id/view1"
        android:width="30pt"
        android:height="30pt"
        android:background="#f0f"/>

</RelativeLayout>

5.网格布局

android:layout_column                设置该子组件在GridLayout的第几列 
android:layout_columnSpan            设置该子组件在GridLayout横向上跨几列 
android:layout_gravity               设置该子组件采用何种方式占据该网格 
android:layout_row                   设置该子组件在GridLayout的第几行 
android:layout_rowSpan               设置该子组件在GridLayout纵向上跨几行。
android:alignmentMode                设置该布局管理器采用的对齐模式
android:columnCount                  设置该网格的列数量
android:columnOrderPreserved         设置该网格容器是否保留列序号
android:orientation                  设置该网格的排列方向,"vertical" 为垂直分布,"horizontal"为水平分布
android:rowCount                     设置该网格的行数量
android:rowOrderPreserved            设置该网格容器是否保留行序号
android:useDefaultMargins            设置是否使用默认的页边距

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
        android:id="@+id/lable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="20dip"
        android:layout_y="20dip"
        android:text="input" />
    <EditText
        android:id="@+id/entry"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_y="40dip" />
    <Button
        android:id="@+id/ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="180dip"
        android:layout_y="100dip"
        android:width="60dip"
        android:text="确定" />
    <Button
        android:id="@+id/cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="270dip"
        android:layout_y="100dip"
        android:width="60dip"
        android:text="取消" />
</AbsoluteLayout>
posted @ 2017-03-18 14:22  Not-Bad  阅读(996)  评论(0编辑  收藏  举报