Android之LinearLayout线性布局

时间:2021-04-16 05:25:55

在Android中,线性布局是程序中最常见的一种布局方式。

线性布局可以分为水平线性布局和垂直线性布局两种,通过android:orientation属性可以设置线性布局的方向。

android:gravity
该属性用于控制布局中控件的对齐方式。如果是没有子控件的控件设置此属性,表示其内容的对齐方式,比如说TextView里面文字的对齐方式;若是有子控件的控件设置此属性,则表示其子控件的对齐方式。

android: layout_weight
通过设置控件的layout_weight属性以控制各个控件在布局中的相对大小。layout_weight属性是一个非负整数值。线性布局会根据该控件layout_weight值与其所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域。例如,在水平布局的LinearLayout中有两个Button,这两个Button的layout_weight属性值都为1,那么这两个按钮都会被拉伸到整个屏幕宽度的一半。如果layout_weight指为0,控件会按原大小显示,不会被拉伸;对于其余layout_weight属性值大于0的控件,系统将会减去layout_weight属性值为0的控件的宽度或者高度,再用剩余的宽度或高度按相应的比例来分配每一个控件显示的宽度或高度。

下面通过一个简单的例子来实现LinearLayout线性布局。

假如我们需要实现如下效果,该如何实现呢

Android之LinearLayout线性布局

下面,我们来仔细分析一下这个布局文件

这个图片被一个垂直线性布局分成了两部分,而且是均等的两部分,如图所示

Android之LinearLayout线性布局

图片上半部分是水平线性布局,其中左边和右边各占1/4,中间占1/2。

图片下半部分是垂直线性布局,其中上中两块分别占1/4,底部占1/2。

其中文字的位置也不相同。

Android之LinearLayout线性布局

分析完成后,可以开始布局了。

布局界面activity_main.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="vertical" >
    <LinearLayout
		android:orientation="horizontal"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:layout_weight="1">
		<TextView
			android:text="红色"
			android:gravity="center_horizontal|center_vertical"
			android:background="#aa0000"
			android:layout_width="wrap_content"
			android:layout_height="fill_parent"
			android:layout_weight="1"/>
		<TextView
			android:text="绿色"
			android:gravity="center_horizontal"
			android:background="#00aa00"
			android:layout_width="wrap_content"
			android:layout_height="fill_parent"
			android:layout_weight="2"/>
		<TextView
			android:text="蓝色"
			android:gravity="center|bottom"
			android:background="#0000aa"
			android:layout_width="wrap_content"
			android:layout_height="fill_parent"
			android:layout_weight="1"/>
	</LinearLayout>
	<LinearLayout
		android:orientation="vertical"
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
	    android:layout_weight="1">
	    <TextView
			android:text="第一行"
			android:gravity="left|top"
	        android:textSize="15sp"
	        android:background="#ff0000"
	        android:layout_width="fill_parent"
	        android:layout_height="wrap_content"
	        android:layout_weight="1"/>
	    <TextView
	        android:text="第二行"
	        android:gravity="center"
	        android:textSize="15sp"
	        android:background="#00ff00"
	        android:layout_width="fill_parent"
	        android:layout_height="wrap_content"
	        android:layout_weight="1"/>
	    <TextView
	        android:text="第三行"
	        android:gravity="right|bottom"
	        android:textSize="15sp"
	        android:background="#0000ff"
	        android:layout_width="fill_parent"
	        android:layout_height="wrap_content"
	        android:layout_weight="2"/>
	</LinearLayout>

</LinearLayout>

主程序MainActivity.java

package com.sl.linearlayoutdemo;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
}

OK,这样就完成啦!