在网上看了一些对Layout_weight的讲解,有些说的比较片面,只列举了一种情况,然后自己通过实验和一些比较好的文章总结了一下,特此记录下来,以备以后所用。Layout_weight是线性布局,也就是LinearLayout里面用到的,下面通过实验来看这个Layout_weight的特性。
1.当控件的属性android:layout_width="fill_parent"时,布局文件如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <Button android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:layout_weight="1"
- android:text="Button1" />
- <Button android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:layout_weight="2"
- android:text="Button2" />
- </LinearLayout>
在这里Button1的Layout_weight=1,Buttong2的Layout_weight=2,运行效果为:
我们看到,Button1占了2/3,Button2占了1/3。如果此时把button2的weight设置成2000,不是说Button2就消失了,而是Button1的宽度几乎占满了屏幕宽度,而屏幕最后一丝细条则是留给Button2的,已近非常小了,没有显示出来。截图如下:
得出结论:在layout_width设置为fill_parent的时候,layout_weight代表的是你的控件要优先尽可能的大,但尽可能大是有限度的,即fill_parent.
2.当控件的属性android:layout_width="wrap_content"时,布局文件如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <Button android:layout_width="wrap_content"
- android:layout_height="wrap_content" android:layout_weight="1"
- android:text="Button1" />
- <Button android:layout_width="wrap_content"
- android:layout_height="wrap_content" android:layout_weight="2"
- android:text="Button2" />
- </LinearLayout>
同样,Button1的weight设置为1,Button2的weight设置为2,但是效果与fill_parent的效果截然相反。运行效果如下:
这时,和fill_parent正好相反,Button1的宽度占据了屏幕宽度的1/3,而Button2的宽度占据了屏幕的2/3,如果此时把Button1的weight设置为2000,按照之前理解,Button1应该小的几乎在屏幕上看不到,但是错了,实验告诉我们,当Button1的weight非常小时,也要"wrap_content",也就是要保证Button1至少能够显示。以下是Button1设置weight为2000时的运行截图:
我们看到,Button1已经足够小,但是要保证他能显示出来,因此得出结论:
在layout_width设置为wrap_content的时候,layout_weight代表的是你的控件要优先尽可能的小,但这个小是有限度的,即wrap_content.
当了解这些后,我们再设计程序时,为了能够自适应屏幕,不想给控件一个指定的宽度和高度,就可以使用这个weight属性来让它按自己比例来划分屏幕高度或者宽度了。
分享到:
相关推荐
在Android开发中,`android:layout_weight`是一个非常重要的属性,尤其在布局管理器中,如LinearLayout。这个属性主要用于在有限的空间内分配组件的大小,根据权重比例来决定每个子视图占据的屏幕空间。本篇文章将...
android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=...
在Android布局设计中,`android:layout_margin`属性用于设置View与周围元素的边距,包括`android:layout_marginTop`、`android:layout_marginBottom`、`android:layout_marginLeft`和`android:layout_marginRight`。...
但是,一旦设置了`layout_weight`,子视图将忽略其原始尺寸,转而按照权重来分配空间。 在提供的代码示例中,我们看到一个LinearLayout包含两个子视图:一个`fragment`和一个`FrameLayout`。这两个子视图的`layout_...
在Android开发中,`android:layout_weight`是一个关键属性,特别是在使用`LinearLayout`进行界面布局时。`layout_weight`用于指定一个子视图在父视图中的权重,它决定了控件如何分配额外的空间,尤其是在视图的尺寸...
ntent" android:layout_height="wrap_content" android:layout_weight="1" android:text="/" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap...
"layout_weight"是Android布局系统中的一个关键概念,用于在LinearLayout中分配子视图的权重,使得它们可以根据相对比例而不是绝对大小来占据空间。Base64是一种用于将二进制数据编码为ASCII字符串的算法,常见于在...
在Android应用开发中,`Layout_weight`属性是一个非常关键的概念,尤其在使用`LinearLayout`时。`Layout_weight`用于在`LinearLayout`中控制子视图(Views)如何平分剩余空间,这对于创建灵活且响应式的用户界面至关...
"Android中gravity与layout_gravity的区别" Android 中的 gravity 和 layout_gravity 是两个常见的属性,它们都是用于设置视图组件的对齐方式,但是它们的作用域和应用场景却有所不同。 首先,让我们来看一下 ...
关键属性有`orientation`(设置布局方向,可选垂直或水平)、`weight`(分配子视图的额外空间比例)以及`layout_gravity`(设置子视图在父视图中的位置)。 2. **RelativeLayout**:相对布局允许子视图相对于其他...
子控件可以通过设置`layout_weight`属性来控制在布局中的相对大小,实现灵活的控件宽度分配。例如,两个`TextView`控件,如果一个的`layout_weight`设为1,另一个设为2,则后者会占据更多的宽度。 - **对齐方式**:...
在Android移动开发中,"Weight"一词通常与布局管理器相关,特别是LinearLayout中的`layout_weight`属性。这个属性在创建动态、响应式界面时非常关键,因为它允许开发者分配视图组件之间的空间比例,而不仅仅是固定...
熟练掌握`layout_weight`的使用,能让你的Android布局设计更加灵活高效。通过实践和理解权重分配机制,你可以创建出适应性强、视觉美观的应用界面。在实际项目中,结合其他布局管理器,如RelativeLayout、...
-<LinearLayout android:background="@drawable/aaa" android:weightSum="1" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" xmlns:android=...
用Eclipse加载项目工程 <LinearLayout xmlns:android=... android:layout_weight="0.66" android:background="@drawable/blue_bg" android:orientation="vertical" > android:layout
View的布局显示方式有下面几种:线性布局(Linear Layout)、相对布局(Relative Layout)、表格布局(Table Layout)、网格视图(Grid View)、标签布局(Tab Layout)、列表视图(List View)、绝对布局...
android:layout_weight="1" <!-- 设置权重 --> android:text="Button 1" /> android:layout_width="0dp" <!-- 同样设置为0dp --> android:layout_height="wrap_content" android:layout_weight="2" <!-- 更...
-<LinearLayout android:background="@drawable/aaa" android:weightSum="1" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" xmlns:android=...
- 示例:`android:layout_weight="1"` - **android:padding** - 用途:设置控件内部内容与边界的距离。 - 示例:`android:padding="10dp"` - **android:singleLine** - 用途:若设置为true,则强制控件内容在...