查看: 816|回复: 0

详解Android中的LinearLayout

[复制链接]
  • TA的每日心情
    无聊
    2017-4-17 15:52
  • 签到天数: 107 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2015-6-14 21:04:46 | 显示全部楼层 |阅读模式
    从上至下,或从左到右。是box model,基于方块依次顺序方式排列。

    RadioGroup是LinearLayout的继承项
    orientation
    在Android XML中使用androidrientation,值为horizontal或者vertical,排版将是水平从左到右,或者竖直从上到下。在java程序中,我们可以通过setOrientation() 来改变方向,例如setOrientation(LinearLayout.HORIZONTAL);
    fill model
    一个widget根据其内容有一个最合适的大小,也就是natural大小,然则我们通才需要根据容器的大小进行排版,在LinearLayout中android:layout_width和android:layout_height是必须设置的,有三种方式:
    1)指定尺寸,例如125px表示125pixels
    2)wrap_content,这就是natual的尺寸
    3)fill_parent:填满容器剩余的尺寸。
    fill_parent将会使用剩余所有的空间,哪怕是后面还有widget,也就将空间填满。而我们并不希望如此,希望剩余的widget仍然有效的排列,而是希望将其他widget排列后的剩余空间。我们将使用layout_weight的属性。
    weight
    layout_weight和wrap_content共同使用,缺省layout_weight为0,也就是size为natural size。(如果和fill_parent相结合,其结果无法预测,因此需特别注意)如果我们希望widget使用了剩余的空间,那么可以设置layout_weight一个有效值。这里是权重,如果有多个widget,就按此权重来分配剩余的空间。如果所有的layout_weight一样,这些widget就对剩余空间进行等分。有时我们会看到不一定很严格按照设定的权重比例来分配空间,必须能支持natural的大小,所以可能会有适配。

    Gravity
    线性布局从上到下,或这从左到右,可以使用gravity,提供align的方式,不按此顺序。对于android:layout_width="wrap_content" ,android:layout_gravity可以设置为left, center_horizontal, righ。在JAVA代码中,可以使用 setGravity(),例如setGravity(Gravity.LEFT); setGravity(Gravity.CENTER_HORIZONTAL);
    需要注意的是在widget中也是有相应的属性,android:gravity,这里指的是widget中文字在widget中的排放位置,例如android:gravity="right"。
    1. <EditText
    2.       android:layout_width="wrap_content"
    3.       android:layout_height="wrap_content"
    4.       android:layout_weight="1"
    5.       android:singleLine="false"
    6.       android:text="test1"
    7.       android:layout_gravity="left"
    8.       />
    9.   <EditText
    10.       android:layout_width="wrap_content"
    11.       android:layout_height="wrap_content"
    12.       android:layout_weight="2"
    13.       android:singleLine="false"
    14.       android:text="test2/ncenter_horizontal"
    15.       android:layout_gravity="center_horizontal"
    16.       />
    17.   <EditText
    18.       android:layout_width="wrap_content"
    19.       android:layout_height="wrap_content"
    20.       android:layout_weight="1"
    21.       android:singleLine="false"
    22.       android:text="test3/nLine_2/nLine_3"
    23.       android:layout_gravity="right"
    24.       />
    复制代码
    下图是button结合weight和gravity的例子

    2015-06-12_093636.png
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    站长推荐上一条 /1 下一条