LinearLayout(线性布局)

顾名思义,LinearLayout是指将布局或者是控件以线性的形式排布到布局里;当然,此处就涉及到两个方向的排布,只要将LinearLayout中的android:orientation属性的属性值设置为vertical(垂直方向)horizontal(水平方向)即可。

线性布局当中的一些常见属性的说明:

属性

属性值

说明

 android:id

@+id/id_name

设置

android:layout_width

match_parent|wrap_content

设置布局的宽度

android:layout_height

match_parent|wrap_content

设置布局的宽度

android:weight

0|1|2…

设置布局的权重比例

android:orientation

vertical|horizontal

设置布局的方向

android:gravity

top|bottom|right|left…

设置布局内组件的对齐方式

android:layout_gravity

top|bottom|right|left…

设置布局在父控件的对齐方式

android:background

RGB|十六进制

设置背景颜色

 

但是在线性布局当中还有个权重需要注意一下,分水平方向与竖直方向来讲吧

1. 垂直布局:

在布局文件中输入以下代码,很显然是垂直布局,然后添加了三个TextView用来显示布局的特点,分别加以background属性用来设置背景颜色以示区分,首先先将各个TextView组件的宽度设置为匹配父控件,然后将高度设置为0dip,因为现在是垂直排布,所以权重的设置是关于控件的高度的;再将三个控件的权重设置为2:1:3

<?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">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="2"
        android:background="#FF0000"
        android:text="第一行"
        android:textSize="24sp"
        android:gravity="center"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:background="#00FF00"
        android:text="第二行"
        android:textSize="24sp"
        android:gravity="center"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="3"
        android:background="#0000FF"
        android:text="第三行"
        android:textSize="24sp"
        android:gravity="center"/>

</LinearLayout>

 

可以看到其布局格式如下面图左所示,看上去也就是2:1:3了。然后将上述代码中的高度的属性值改为match_parent,也就是说每一个控件的高度都设置为了占满一个屏幕,在实际中,如果设置前面的控件已经占满了屏幕之后,那么后面的控件因为没有屏幕可以分配给他,所以会被挤到屏幕之外。但是可以观察到布局格式如下图右所示:第三个控件已经没了,但是第一个和第二个却是看上去1:2的比例。

  

 

出现图左的格式是因为高度都设置为0,此时就还剩下一整个空白的屏幕能够按照之前设置的权重比例来分配各控件的高度。即第一个分配2/(2+1+3)的区间,第二个分配1/(2+1+3)的区间,第三个就分配3/(2+1+3)的区间

而出现右图的情况是因为每一个控件的高度都设置为匹配父控件,因此要将三个控件都完全的显示在屏幕中,理论上是需要三块屏幕来显示的;不过实际上只有一个屏幕,当前面的控件将屏幕占满之后,后面的控件就会因为没有地方而被排挤在屏幕之外。因此,在此处。我们就缺少了两块屏幕用来显示控件。即缺少-2;但是因为此处设置了权重,所以缺少的部分就需要三个控件按照其权重比来减少各自的部分。即有:第一个要在match_parent的基础上减少(-2)*2/6的地方;第二个需要减少(-2)*1/6的地方;同样的,第三个需要减少(-2)*3/6的地方;综上所述,三个控件剩下部分的比值就是[1-(-2)*2/6]:[1-(-2)*1/6]:[1-(-2)*3/6]=1:2:0

思考,当上述代码中高度设置为match_parent,权重设置为2:2:3又会如何?

2. 水平布局:

关于水平布局只需将上述代码中的android:orientation属性设置为horizontal即可,具体的不再详述

posted on 2016-07-18 23:39  Rocking7189  阅读(772)  评论(0)    收藏  举报

导航