- 浏览: 70502 次
- 性别:
- 来自: 北京
最新评论
对线性布局中权重的理解
转载请注明出处:http://renyuan-1991.iteye.com/blog/2272200
今天突然想到自己对线性布局的理解,便想再此记录下来。写这篇博客之前特意看了很多别人写的线性布局的权重理解发现只有一篇是正确的,其余都是按“包裹内容时权重越大比例越大,匹配父窗体时权重越大比例越小”,或者反比正比的什么规律。这样的理解是不对的,对于自己写动态布局会产生很大的困扰,如果按这样的理解,下面的情况就无法解释了。
按照上面的说法这段代码显示的样式应该是3:2:1,可实际的情况是下图中的第二个线性布局
上面代码显示的布局中黄色的textview根本没有显示,所以“包裹内容时权重越大比例越大,匹配父窗体时权重越大比例越小”这种说法是不正确的。控件最终宽度 = 控件初始宽度+((屏幕宽度-控件宽度和)/(所有weight之和))*这里是水平方向的所以用宽度举例,竖直方向同理。
接下来我们看一下上图中对应的代码
第一段代码:控件宽度之和是0dp,所以屏幕剩余量是1个屏幕宽度。weight之和是6。先把屏幕剩余量分6份,第一个textview占一份第二个TextView占两份第三个TextView占三份。最后它们显示的宽度就是0+1/6,0+2/6,0+3/6。
第二段代码:控件宽度之和是3个屏幕宽度,所以屏幕剩余量是-2个屏幕宽度。weight之和是6。先把屏幕剩余量分6份,第一个textview占一份第二个TextView占两份第三个TextView占三份。最后它们显示的宽度就是1+(1/6)*(-2),1+(2/6)*(-2),1+(3/6)*(-2)。所以第一个TextView和第二个TextView已经占满了屏幕第三个TextView自然就显示不出来了
第三段代码:控件宽度之和是100dp,所以屏幕剩余量是1个屏幕宽度减去100dp。weight之和是6。先把屏幕剩余量分6份,第一个textview占一份第二个TextView占两份第三个TextView占三份。最后它们显示的宽度就是0+(1/6)*剩余量,0+(2/6)*剩余量,100+(3/6)*剩余量
ok,到这儿就结束了....
希望爱好编程的小伙伴能加这个群,互相帮助,共同学习。群号: 141877583
转载请注明出处:http://renyuan-1991.iteye.com/blog/2272200
今天突然想到自己对线性布局的理解,便想再此记录下来。写这篇博客之前特意看了很多别人写的线性布局的权重理解发现只有一篇是正确的,其余都是按“包裹内容时权重越大比例越大,匹配父窗体时权重越大比例越小”,或者反比正比的什么规律。这样的理解是不对的,对于自己写动态布局会产生很大的困扰,如果按这样的理解,下面的情况就无法解释了。
<LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:layout_marginTop="50dp" android:layout_height="50dp"> <TextView android:layout_weight="1" android:layout_width="match_parent" android:background="@color/blue" android:layout_height="match_parent" /> <TextView android:layout_weight="2" android:layout_width="match_parent" android:background="@color/red" android:layout_height="match_parent" /> <TextView android:layout_weight="3" android:background="@color/yellow" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
按照上面的说法这段代码显示的样式应该是3:2:1,可实际的情况是下图中的第二个线性布局
上面代码显示的布局中黄色的textview根本没有显示,所以“包裹内容时权重越大比例越大,匹配父窗体时权重越大比例越小”这种说法是不正确的。控件最终宽度 = 控件初始宽度+((屏幕宽度-控件宽度和)/(所有weight之和))*这里是水平方向的所以用宽度举例,竖直方向同理。
接下来我们看一下上图中对应的代码
<LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:layout_marginTop="50dp" android:layout_height="50dp"> <TextView android:layout_weight="1" android:layout_width="0dp" android:background="@color/blue" android:layout_height="match_parent" /> <TextView android:layout_weight="2" android:layout_width="0dp" android:background="@color/red" android:layout_height="match_parent" /> <TextView android:layout_weight="3" android:background="@color/yellow" android:layout_width="0dp" android:layout_height="match_parent" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:layout_marginTop="50dp" android:layout_height="50dp"> <TextView android:layout_weight="1" android:layout_width="match_parent" android:background="@color/blue" android:layout_height="match_parent" /> <TextView android:layout_weight="2" android:layout_width="match_parent" android:background="@color/red" android:layout_height="match_parent" /> <TextView android:layout_weight="3" android:background="@color/yellow" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:layout_marginTop="50dp" android:layout_height="50dp"> <TextView android:layout_weight="1" android:layout_width="0dp" android:background="@color/blue" android:layout_height="match_parent" /> <TextView android:layout_weight="1" android:layout_width="0dp" android:background="@color/red" android:layout_height="match_parent" /> <TextView android:layout_weight="1" android:background="@color/yellow" android:layout_width="100dp" android:layout_height="match_parent" /> </LinearLayout>
第一段代码:控件宽度之和是0dp,所以屏幕剩余量是1个屏幕宽度。weight之和是6。先把屏幕剩余量分6份,第一个textview占一份第二个TextView占两份第三个TextView占三份。最后它们显示的宽度就是0+1/6,0+2/6,0+3/6。
第二段代码:控件宽度之和是3个屏幕宽度,所以屏幕剩余量是-2个屏幕宽度。weight之和是6。先把屏幕剩余量分6份,第一个textview占一份第二个TextView占两份第三个TextView占三份。最后它们显示的宽度就是1+(1/6)*(-2),1+(2/6)*(-2),1+(3/6)*(-2)。所以第一个TextView和第二个TextView已经占满了屏幕第三个TextView自然就显示不出来了
第三段代码:控件宽度之和是100dp,所以屏幕剩余量是1个屏幕宽度减去100dp。weight之和是6。先把屏幕剩余量分6份,第一个textview占一份第二个TextView占两份第三个TextView占三份。最后它们显示的宽度就是0+(1/6)*剩余量,0+(2/6)*剩余量,100+(3/6)*剩余量
ok,到这儿就结束了....
希望爱好编程的小伙伴能加这个群,互相帮助,共同学习。群号: 141877583
发表评论
-
通过Url打开app页面并传递参数
2017-12-09 17:56 3978转载请注明出处:http:// ... -
Retrofit+RxJava搭建网络请求和数据解析框架
2017-06-29 18:20 0好久没写博客了,实话说,这一年相比往年可以说没什么进步,工作四 ... -
viewpager指示器
2016-11-08 16:04 0viewpager指示器 实现该需求的几种方法的基本原理和缺点 ... -
Android Studio模板,省去界面重复部分的开发
2016-07-06 16:05 0Android Studio模板,省去界面重复部分的开发 -
android studio 运行java代码
2016-06-21 17:50 2429转载请注明出处: http://renyuan-1991.it ... -
自定义组合控件的总结
2016-06-21 16:27 1554自定义组合控件的总结 转载请注明出处:http://renyu ... -
只显示年月的DatePicker
2016-06-12 17:30 3376转载请注明出处:http://renyuan-1991.ite ... -
Android的约束布局ConstaintLayout
2016-06-24 15:05 9924ConstaintLayout的初次使用总结 转载请注明出处 ... -
Android遮罩层引导页的实现
2016-06-03 16:28 0实现遮罩层引导页可以通过以下几种方式,本文主要记录张洪洋Hig ... -
手势密码
2016-05-24 14:52 0我们公司做的是理财产品,所以手势密码这个东西少不了,在写手势密 ... -
setBackgroundResource导致Padding失效,settextsize
2016-01-18 19:50 1575通过setBackground设置9 patc ... -
NestedScrolling的使用及ScrollView的惯性滑动
2015-12-08 18:14 21572NestedScrolling的使用及ScrollView的惯 ... -
android-async-http使用和取消请求
2015-10-15 12:06 4996android-async-http使用总结 下载最新的包可以 ... -
触摸屏幕取消键盘
2015-10-13 18:09 1587当点击文本框和发送按钮的时候不需要取消键盘,点击屏幕其他按钮或 ... -
四种方式实现ListView中的倒计时一()
2015-09-29 12:33 0的奋斗奋斗奋斗 -
SQLite详解
2015-10-10 15:07 1105概述 SQLite是D.Richar ... -
android 的屏幕适配问题,dp与px的换算
2015-08-08 19:11 1776在进入正题之前先了解 ... -
自定义ViewGroup实现动态创建可换行标签
2015-08-03 15:15 1217转载请注明:http://renyua ... -
Android第三方框架之xListView的使用方法
2014-11-09 19:18 5152==最近向用xListView实现刷新效果,在网上没有找到相关 ...
相关推荐
本篇文章将深入探讨线性布局的使用方法、属性以及如何在实际应用中灵活运用。 线性布局的工作原理: 线性布局按照设定的`orientation`属性,将子视图沿着一条直线进行堆叠。默认情况下,`orientation`值为`vertical...
《Android移动应用开发线性布局LinearLayout的weight属性详解》 在Android移动应用开发中,界面设计是一项关键任务,尤其在多样化的设备分辨率环境下,保证布局的适应性和灵活性至关重要。LinearLayout作为常用的...
`android:layout_weight`参数是线性布局的一个关键特性,用于在剩余空间中分配子视图的大小。当设置`android:layout_weight`时,需要同时设置`android:layout_width`或`android:layout_height`为`"fill_parent"`,...
本篇文章将深入探讨线性布局(LinearLayout)的使用方法、特性以及如何通过代码实现。 线性布局(LinearLayout)是Android中最常见的布局方式,它按照垂直或水平方向排列其子视图(Views)。线性布局允许开发者设置...
【线性布局LinearLayout详解】 线性布局LinearLayout是Android开发中常用的一种布局方式,它遵循一个单一的行或列的方向来组织子视图。LinearLayout的主要特点在于它的简单性和灵活性,可以根据需求进行水平或垂直...
线性布局支持权重分配,允许子视图按比例占据剩余空间,这在创建响应式设计时非常有用。例如,`android:layout_weight`属性可以帮助我们创建等宽或等高的子视图。 2. **RelativeLayout**:相对布局允许子视图相对于...
以上代码展示了如何使用线性布局来实现一个简单的布局结构,其中包括了一个顶部的`RelativeLayout`和一个包含三个部分的横向`LinearLayout`。通过设置`android:layout_weight`属性,我们可以轻松地按照特定比例分配...
本文将深入探讨Android的五大布局——线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)、表格布局(TableLayout)以及约束布局(ConstraintLayout),并详细解析它们的工作原理和使用...
Android提供了多种布局类型,如LinearLayout(线性布局,水平或垂直排列)、RelativeLayout(相对布局,基于相对位置放置组件)、FrameLayout(帧布局,按顺序叠加组件)、TableLayout(表格布局)等。每种布局都有...
#### 五、LinearLayouts(线性布局) 1. **`android:layout_weight`**:该属性用于指定视图在LinearLayout中的权重分配。例如,在一个水平LinearLayout中,如果有两个TextView,第一个TextView的`android:layout_...
- 结合`android:layout_weight`,线性布局还可以实现灵活的界面设计,适应不同屏幕尺寸和设备方向。 - 虽然LinearLayout简单易用,但在复杂的布局需求中可能会显得力不从心,这时可以考虑使用`RelativeLayout`、`...
线性布局(LinearLayout)是Android开发中常用的布局方式之一,它允许我们将视图(View)按照垂直或水平的方向进行排列。在本篇文章中,我们将深入探讨LinearLayout的各种属性及其使用方法,帮助开发者更好地理解和...
线性布局(LinearLayout)是Android开发中最基础也是最常用的布局之一,它允许将子视图按照垂直或水平的方向排列。通过设置`android:orientation`属性,可以改变布局方向,值为`vertical`时子视图从上到下排列,值为...
下面通过两个示例代码来具体说明线性布局的使用方法: **实现水平布局** ```xml xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height=...
- `layout_weight`:分配给组件的权重,用于确定组件占据的相对空间,权重高的组件将占用更多空间。 示例代码展示了如何创建一个包含两个子线性布局的主线性布局,一个垂直排列,一个水平排列,其中水平布局的按钮...
本文将详细介绍Android中常见的几种布局——线性布局(LinearLayout)、表格布局(TableLayout)和相对布局(RelativeLayout)以及单选框(RadioGroup和RadioButton)和多选框(CheckBox)的使用方法和相关属性。...
8. **控件适配(View Hierarchy)**:为了适应不同屏幕尺寸和密度,Android引入了布局权重(layout_weight)和百分比布局(PercentRelativeLayout/PercentFrameLayout)。此外,还可以使用可折叠布局...