在网上看了一些对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属性来让它按自己比例来划分屏幕高度或者宽度了。
- 大小: 3 KB
- 大小: 2.2 KB
- 大小: 3.1 KB
- 大小: 3 KB
分享到:
相关推荐
- **权重分配**:在TableRow中,可以使用`android:layout_weight`属性为控件分配权重,决定控件占据的列宽比例。 4. **Spanned Cells(跨列):** - 通过设置`android:layout_span`属性,可以让一个控件跨越多列...
1. `android:layout_width`和`android:layout_height`:同样用于子视图,但可以结合`android:layout_weight`使用,以实现按比例分配空间。 2. `android:layout_weight`:为子视图分配额外的空间,根据权重比例分配。...
android:layout_weight="1" android:text="Button 2"/> android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:text="Button 3"/> ``` 在这个例子中,...
如果希望TextView靠右,可以给ImageView添加`layout_weight`属性,然后在TextView中设置`android:gravity="right"`,使其内容自动靠右显示。 Android提供了多种布局属性,可以控制视图在屏幕上的位置和对齐方式: ...
它可以自动调整视图之间的间距,并且可以指定权重(`android:layout_weight`)来控制子视图如何分配可用空间。 **代码示例:** ```xml xmlns:android="http://schemas.android.com/apk/res/android" android:...
android:layout_weight="1" /> ``` TabWidget是显示标签的地方,而FrameLayout用于填充每个标签页对应的内容。`layout_weight=1`设置使得内容区域占据剩余空间,确保了内容区域在屏幕上的适配。 接着,我们来...
android:layout_weight="1" android:layout_height="0dp" android:adjustViewBounds="true" android:scaleType="centerCrop" /> ``` 3. **填充数据** 在代码中,我们需要动态地向`TableLayout`中添加`Table...
android:layout_weight="1" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:paddingLeft="6dip" android:gravity="center_vertical" android:orientation="horizontal"/...
- 使用`android:layout_weight`属性实现弹性布局效果,让视图根据需要自动调整大小。 - 使用`<merge>`标签减少布局层次,优化性能。 7. **总结**: "Android代码(相对布局).zip"中的"Pro07(相对布局)"项目...
android:layout_weight="1" android:layout_height="wrap_content" android:text="取消" /> android:id="@+id/btnDialogOk" android:layout_width="0dp" android:layout_weight="1" android:layout_height...
android:layout_weight="1.0" android:cacheColorHint="#00000000" android:divider="#00000000" android:dividerHeight="0.1px" android:fadingEdge="none" android:footerDividersEnabled="false" android:...
android:layout_weight="2" android:text="账号:" android:textColor="@color/white" /> android:id="@+id/editText1" android:layout_width="0.0dp" android:layout_weight="8" android:layout_height=...
在TableRow中,可以通过`android:layout_span`属性让一个单元格跨越多个列。此外,TableLayout还支持`android:shrinkColumns`和`android:stretchColumns`属性,可以控制哪些列在空间不足时收缩,哪些列在有额外空间...
android:layout_weight="1"> <!-- 数字键和其他特殊键 --> android:id="@+id/key_1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="1" /> ...
android:layout_weight="1" android:text="Your App Name" android:gravity="center_vertical" android:textSize="20sp" android:textColor="@android:color/white" /> <!-- Add your custom buttons or ...
通过合理利用Android布局系统提供的特性,如`LinearLayout`的`layout_weight`,开发者可以创建既美观又功能强大的用户界面。在实践中,不断试验和调整布局参数,结合不同设备的测试,是达到理想效果的关键步骤。通过...
android:layout_weight="1" android:orientation="vertical"> android:id="@+id/username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/...
`android:layout_width`和`android:layout_height`通常设置为0dp,然后通过`android:layout_weight`分配空间。 3. **初始化Fragment**:虽然在XML中已声明了Fragment,但还需要在Activity的`onCreate()`方法中进行...
android:layout_weight="1" android:text="取消" /> android:id="@+id/button_ok" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="确定" /> ...
android:layout_weight="1"> android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <!-- Add your content views here --...