从零开始学android:布局管理器

本文详细介绍了Android开发中常用的布局管理器,包括线型布局LinearLayout、框架布局FrameLayout、表格布局TableLayout、相对布局RelativeLayout及绝对定位布局AbsoluteLayout。通过实例展示了每种布局的特点和用法,并探讨了布局之间的嵌套应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线型布局管理器LinearLayout

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
   	android:orientation="vertical"
   	android:layout_width="fill_parent"
   	android:layout_height="fill_parent"
    >
    <TextView 
        android:id="@+id/myshowa"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="牛儿吃草"
        />
    <TextView 
        android:id="@+id/myshoub"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="博客:http://blog.youkuaiyun.com/e421083458"
        />
    <TextView 
        android:id="@+id/myshowc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="www.baidu.com"
        />
</LinearLayout>


框架布局管理器FrameLayout

FrameLayout布局(帧布局)就是在屏幕上开辟一个区域以填充所有的组件,但是使用FrameLayout布局会将所有的组件都放在屏幕的左上角,而且所有的组件可以层叠进行显示。

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

    <ImageView 
        android:id="@+id/myimg"
        android:src="@drawable/ic_launcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <EditText
        android:id="@+id/myinput"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请输入您的。。." />

    <Button
        android:id="@+id/mybut"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按我" />
    
</FrameLayout>

package com.richard.framelayout;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		FrameLayout layout = new FrameLayout(this);
		FrameLayout.LayoutParams layoutParam = new FrameLayout.LayoutParams(
				ViewGroup.LayoutParams.FILL_PARENT,		//布局宽度为屏幕宽度
				ViewGroup.LayoutParams.FILL_PARENT
				);
		FrameLayout.LayoutParams viewParam = new FrameLayout.LayoutParams(
				ViewGroup.LayoutParams.WRAP_CONTENT,	//组建宽度为内容宽度
				ViewGroup.LayoutParams.WRAP_CONTENT		//组建高度为内容高度
				);
		ImageView img = new ImageView(this);
		img.setImageResource(R.drawable.ic_launcher);
		EditText edit = new EditText(this);
		edit.setText("请输入你的大名");
		Button but = new Button(this);
		but.setText("按我");
		layout.addView(img,viewParam);
		layout.addView(edit,viewParam);
		layout.addView(but,viewParam);
		super.setContentView(layout,layoutParam);	
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}



表格布局管理器TableLayout

TableLayout是采用表格的形式对控件的布局进行管理的,在TableLayout布局管理器之中,要使用TableRow进行表格行的控制,之后所有的组件要在TableRow中增加。

范例一:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TableRow >
        <EditText 
            android:id="@+id/myinput"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="请输入检索关键字..."
            />
        <Button 
            android:id="@+id/search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="检索"
            />
    </TableRow>
    <View 
        android:layout_height="2px"
        android:background="#ff0909"/>
    <TableRow >
        <TextView 
            android:id="@+id/info1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20px"
            android:text="请选择文字编码"
            />
        <RadioGroup 
            android:id="@+id/encoding"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:checkedButton="@+id/gbk"
            >
            <RadioButton 
                android:id="@+id/utf"
                android:text='utf8编码'
                />
            <RadioButton 
                android:id="@+id/gbk"
                android:text="gbk编码"
                />
        </RadioGroup>
        
    </TableRow>
    
</TableLayout>



范例二:

加背景和表格形式排列。

<?xml version="1.0" encoding="utf-8"?>
<TableLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/logo"
    android:shrinkColumns="3"
    android:collapseColumns="0,2"
    >
    <TableRow >
        <TextView 
            android:layout_column="0"
            android:text='ID'
            android:gravity="center_horizontal"
            android:padding="8px"/>
        <TextView 
            android:layout_column="1"
            android:text="姓名"
            android:gravity="center_horizontal"
            android:padding="8px"/>
        <TextView 
            android:layout_column="2"
            android:text="Email"
            android:gravity="center_horizontal"
            android:padding="8px"/>
        <TextView 
            android:layout_column="3"
            android:text="地址"
            android:gravity="left"
            android:padding="8px"/>
    </TableRow>
    <View 
        android:layout_height="2px"
        android:background="#ff9090"
        />
    <TableRow >
        <TextView 
            android:layout_column="0"
            android:text='MLDN'
            android:gravity="center_horizontal"
            android:padding="3px"/>
        <TextView 
            android:layout_column="1"
            android:text="魔乐科技"
            android:gravity="center_horizontal"
            android:padding="3px"/>
        <TextView 
            android:layout_column="2"
            android:text="mldnkf@163.com"
            android:gravity="center_horizontal"
            android:padding="3px"/>
        <TextView 
            android:layout_column="3"
            android:text="北京西城区甲11号德外大街德胜科技园美江大厦 A座 - 6层 —— MLDN魔乐科技"
            android:gravity="left"
            android:padding="3px"/>
    </TableRow>
    <TableRow >
        <TextView 
            android:layout_column="0"
            android:text='richard'
            android:gravity="center_horizontal"
            android:padding="3px"/>
        <TextView 
            android:layout_column="1"
            android:text="牛儿吃草"
            android:gravity="center_horizontal"
            android:padding="3px"/>
        <TextView 
            android:layout_column="2"
            android:text="e421083458@163.com"
            android:gravity="center_horizontal"
            android:padding="3px"/>
        <TextView 
            android:layout_column="3"
            android:text="山东泰山"
            android:gravity="left"
            android:padding="3px"/>
    </TableRow>
</TableLayout>


范例三:

动态生成表格

package com.example.tablelayout;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.ViewGroup;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

public class MainActivity extends Activity {
	private String titleData[][] = new String[][]{
			{"ID","姓名","EMALL","地址"},
			{"ID","姓名","EMALL","地址"},
			{"ID","姓名","EMALL","地址"},
			{"ID","姓名","EMALL","地址"}};		//显示数据
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		TableLayout layout = new TableLayout(this);
		TableLayout.LayoutParams layoutParam = new TableLayout.LayoutParams(
				ViewGroup.LayoutParams.FILL_PARENT,			//布局管理器宽度为屏幕宽度
				ViewGroup.LayoutParams.FILL_PARENT);		//布局管理器高度为屏幕高度
		layout.setBackgroundResource(R.drawable.logo);		//设置北京图片
		for(int x=0;x<this.titleData.length;x++){
			TableRow row = new TableRow(this);
			for(int y=0;y<this.titleData[x].length;y++){
				TextView text = new TextView(this);
				text.setText(this.titleData[x][y]);
				row.addView(text,y);	//增加组建
			}
			layout.addView(row);
		}
		super.setContentView(layout, layoutParam);			//定义组
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


相对布局管理器RelativeLayout

相对布局管理器指的是参考某一其他控件进行摆放,可以通过控制,将组件摆放在一个指定参考组件的上、下、左、右等位置,这些可以直接通过各个组件提供的属性完成。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RealtiveLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ImageView 
        android:id="@+id/imga"
        android:src="@drawable/logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <ImageView 
        android:id="@+id/imgb"
        android:src="@drawable/ic_launcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/imga"
        />
    <TextView 
        android:text="牛儿吃草的博客"
        android:id="@+id/mytext"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_toRightOf="@+id/imga"
        android:layout_below="@+id/imgb"
        />
    <Button 
        android:text="http://blog.youkuaiyun.com/e421083458"
        android:id="@+id/mybut"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_below="@+id/mytext"
        />
</RelativeLayout>

package com.richard.relativelayout;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.RelativeLayout;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		RelativeLayout layout  = (RelativeLayout) super.findViewById(R.id.RealtiveLayout1);
		RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(
				ViewGroup.LayoutParams.FILL_PARENT,
				ViewGroup.LayoutParams.FILL_PARENT
				);
		param.addRule(RelativeLayout.BELOW,R.id.mybut);
		param.addRule(RelativeLayout.RIGHT_OF,R.id.imga);
		EditText text =  new EditText(this);
		layout.addView(text,param);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

绝对定位布局管理器AbsoluteLayout

<AbsoluteLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/absolutelayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    
    <TextView 
        android:text="牛儿吃草的博客"
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="80px"
        android:layout_y="10px"
        />
    <TextView 
        android:text="blog.youkuaiyun.com/e421083458"
        android:id="@+id/TextView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="90px"
        android:layout_y="30px"
        />
    <ImageView 
        android:id="@+id/img"
        android:src="@drawable/img_111"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="20px"
        android:layout_y="100px"
        />
</AbsoluteLayout>

布局管理器的嵌套

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
	
    <Button
        android:id="@+id/mybut1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="牛儿吃草的博客"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
        
        <ImageView 
            android:src="@drawable/iokkf2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
        <ImageView 
            android:src="@drawable/iok_wx"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    </LinearLayout>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TableRow >
            <EditText 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="请输入检索关键词"
                />
            <Button 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="检索"
                />
        </TableRow>
    </TableLayout>
    
</LinearLayout>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

e421083458

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值