Android之LinearLayout线性布局

在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线性布局。

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


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

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


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

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

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


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

布局界面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,这样就完成啦!


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值