浏览 18562 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-10
最后修改:2009-07-10
声明:这是android官方网站上的例子,添加了自己的理解,望各位大牛们多多指教 main.xml <?xml version="1.0" encoding="utf-8"?> <!-- <LinearLayout> 线性版面配置,在这个标签中,所有元件都是按由上到下的排队排成的 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- android:orientation="vertical" 表示竖直方式对齐 android:orientation="horizontal"表示水平方式对齐 android:layout_width="fill_parent"定义当前视图在屏幕上 可以消费的宽度,fill_parent即填充整个屏幕。 android:layout_height="wrap_content":随着文字栏位的不同 而改变这个视图的宽度或者高度。有点自动设置框度或者高度的意思 layout_weight 用于给一个线性布局中的诸多视图的重要度赋值。 所有的视图都有一个layout_weight值,默认为零,意思是需要显示 多大的视图就占据多大的屏幕空 间。若赋一个高于零的值,则将父视 图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight 值以及该值在当前屏幕布局的整体 layout_weight值和在其它视图屏幕布 局的layout_weight值中所占的比率而定。 举个例子:比如说我们在 水平方向上有一个文本标签和两个文本编辑元素。 该文本标签并无指定layout_weight值,所以它将占据需要提供的最少空间。 如果两个文本编辑元素每一个的layout_weight值都设置为1,则两者平分 在父视图布局剩余的宽度(因为我们声明这两者的重要度相等)。如果两个 文本编辑元素其中第一个的layout_weight值设置为1,而第二个的设置为2, 则剩余空间的三分之二分给第一个,三分之一分给第二个(数值越小,重要 度越高)。 --> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <TextView android:text="red" android:gravity="center_horizontal" android:background="#aa0000" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="green" android:gravity="center_horizontal" android:background="#00aa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="blue" android:gravity="center_horizontal" android:background="#0000aa" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="yellow" android:gravity="center_horizontal" android:background="#aaaa00" 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="2"> <TextView android:text="row one" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row two" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row three" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row four" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> </LinearLayout> 感觉这种形式有点像div+css的方式布局,不过这种方式的灵活性和div+css还是有些不及,主要是那android:layout_weight的值如何去确定,而且采用的是数值越小,重要度越高的方式,分配起来还得好好计算一下。 Views.java package com.cn.view; import android.app.Activity; import android.os.Bundle; public class Views extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 我使用的版本为1.5.欢迎朋友们讨论 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-11
最后修改:2009-07-11
我试过的是 空间按 weight 的比例的正比划分,不是反比。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- view1 goes on top --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="1111111111111111"/> <!-- view2 goes in the middle --> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="222222222222222"/> <!-- view3 goes on the bottom --> <TextView android:layout_weight="2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="333333333333333"/> </LinearLayout> |
|
返回顶楼 | |
发表时间:2009-07-15
我明白了 在一个LinearLayout内各个组件是按weight值以正比形式显示在屏幕上 而在LinearLayout之间以反比的形式显示在屏幕上 呵呵
|
|
返回顶楼 | |
发表时间:2009-08-20
大家能讨论以下为什么再LinearLayout之间是反比的形式显示在屏幕上的吗,我觉得不符合逻辑啊。
为什么不都是以正比的形式显示呢 |
|
返回顶楼 | |
发表时间:2010-03-08
我想改变 LinearLayout 的背景颜色或图片 通过代码怎么实现 请帮忙~~~~
|
|
返回顶楼 | |
发表时间:2010-05-24
Java豆儿 写道 我想改变 LinearLayout 的背景颜色或图片 通过代码怎么实现 请帮忙~~~~
background 属性 |
|
返回顶楼 | |
发表时间:2010-05-26
litchi 写道 大家能讨论以下为什么再LinearLayout之间是反比的形式显示在屏幕上的吗,我觉得不符合逻辑啊。
为什么不都是以正比的形式显示呢 引用 # layout_weight 用于给一个线性布局中的诸多视图的重要度赋值。
# 所有的视图都有一个layout_weight值,默认为零,意思是需要显示 # 多大的视图就占据多大的屏幕空 间。若赋一个高于零的值,则将父视 # 图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight # 值以及该值在当前屏幕布局的整体 layout_weight值和在其它视图屏幕布 # 局的layout_weight值中所占的比率而定。 # 举个例子:比如说我们在 水平方向上有一个文本标签和两个文本编辑元素。 # 该文本标签并无指定layout_weight值,所以它将占据需要提供的最少空间。 # 如果两个文本编辑元素每一个的layout_weight值都设置为1,则两者平分 # 在父视图布局剩余的宽度(因为我们声明这两者的重要度相等)。如果两个 # 文本编辑元素其中第一个的 layout_weight值设置为1,而第二个的设置为2, # 则剩余空间的三分之二分给第一个,三分之一分给第二个(数值越小,重要 # 度越高)。 lz赶紧改改吧。 weight - 一看名字就知道不是一个用来做显示比例的,而是一个权重值。看看官方文档就明白是什么意思了。 引用 LinearLayout also supports assigning a weight to individual children. This attribute assigns an "importance" value to a view, and allows it to expand to fill any remaining space in the parent view. Child views can specify an integer weight value, and then any remaining space in the view group is assigned to children in the proportion of their declared weight. Default weight is zero. For example, if there are three text boxes and two of them declare a weight of 1, while the other is given no weight (0), the third text box without weight will not grow and will only occupy the area required by its content. The other two will expand equally to fill the space remaining after all three boxes are measured. If the third box is then given a weight of 2 (instead of 0), then it is now declared "more important" than both the others, so it gets half the total remaining space, while the first two share the rest equally. weight是一个权重值,表示重要程度。如果三个view横列,前两个view的wieght是1,第三个是默认值0。可见第三个view的权weight最低,那么第三个view就只会占用自己内容所需的宽度,剩下的宽度会被前两个view平分。 如果第三个view的wieght是2,那么前两个view就只占据自己内容所需的宽度,第三个会占据剩下所有空间。 |
|
返回顶楼 | |