- 浏览: 69418 次
- 性别:
- 来自: 北京
最新评论
对线性布局中权重的理解
转载请注明出处: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 3924转载请注明出处: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 2379转载请注明出处: http://renyuan-1991.it ... -
自定义组合控件的总结
2016-06-21 16:27 1496自定义组合控件的总结 转载请注明出处:http://renyu ... -
只显示年月的DatePicker
2016-06-12 17:30 3300转载请注明出处:http://renyuan-1991.ite ... -
Android的约束布局ConstaintLayout
2016-06-24 15:05 9850ConstaintLayout的初次使用总结 转载请注明出处 ... -
Android遮罩层引导页的实现
2016-06-03 16:28 0实现遮罩层引导页可以通过以下几种方式,本文主要记录张洪洋Hig ... -
手势密码
2016-05-24 14:52 0我们公司做的是理财产品,所以手势密码这个东西少不了,在写手势密 ... -
setBackgroundResource导致Padding失效,settextsize
2016-01-18 19:50 1535通过setBackground设置9 patc ... -
NestedScrolling的使用及ScrollView的惯性滑动
2015-12-08 18:14 21466NestedScrolling的使用及ScrollView的惯 ... -
android-async-http使用和取消请求
2015-10-15 12:06 4943android-async-http使用总结 下载最新的包可以 ... -
触摸屏幕取消键盘
2015-10-13 18:09 1547当点击文本框和发送按钮的时候不需要取消键盘,点击屏幕其他按钮或 ... -
四种方式实现ListView中的倒计时一()
2015-09-29 12:33 0的奋斗奋斗奋斗 -
SQLite详解
2015-10-10 15:07 1060概述 SQLite是D.Richar ... -
android 的屏幕适配问题,dp与px的换算
2015-08-08 19:11 1719在进入正题之前先了解 ... -
自定义ViewGroup实现动态创建可换行标签
2015-08-03 15:15 1148转载请注明:http://renyua ... -
Android第三方框架之xListView的使用方法
2014-11-09 19:18 5104==最近向用xListView实现刷新效果,在网上没有找到相关 ...
相关推荐
基于MATLAB实现线性递减权重粒子群优化算法
当给组件的大小,设置match_parent时,然后将组件的权重设置为1 2 3时,会发现只显示两个组件,并且比例为2:1。 针对这个问题,进行说明。 问题代码: 效果图: 结果分析: step1: 这里将match_parent...
线性权重粒子群算法
计算FID所用的权重 weight
线性递减权重粒子群算法MATLAB代码,适合粒子群算法初学者
针对Taylor算法进行TDOA定位时,其初始估计位置的误差易导致Taylor算法不收敛和定位精度差的问题,提出一种基于自然选择的线性递减权重粒子群优化(W-SPSO)与Taylor算法协同定位的方法。该方法先通过W-SPSO算法得到...
yolov4.weight权重文件,上传分享!
OpenCV-Python图像融合cv2.addWeighted权重加法函数详解.rar
在pytorch的使用过程中有几种权重初始化的方法供大家参考。 注意:第一种方法不推荐。尽量使用后两种方法。 # not recommend def weights_init(m): classname = m.__class__.__name__ if classname.find('Conv') ...
为改进非线性惯性权重粒子群算法,提出了一种带过滤机制的非线性惯性权重粒子群算法。由于原算法存在粒子易陷入局部最优解与搜索效率较低的缺点,将适应度缩放函数引入到非线性惯性动态调整的粒子群算法中,剔除适应...
针对粒子群优化算法中出现早熟和不收敛问题,分析了基本PSO算法参数对其优化性能的影响,提出了基于非线性权重的自适应粒子群优化算法(NWAPSO)。在优化过程中,惯性权重随迭代次数非线性变化,改进的算法能使粒子...
# 线性模型拟合曲线 使用高斯基函数 Python代码 计算权重和梯度下降训练 代码文件内包含三个实验的代码: 1. 使用纯线性模型计算权重拟合曲线; 2. 使用带高斯基函数的线性模型计算权重拟合曲线; 3. 使用SGD随机...
LinearLayout 线性布局,该布局的继承关系: 1. 什么是线性布局 通俗的说感觉起来和线有关,参照线的特点,有么是横向的,要么是竖向的。 LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式...
带过滤机制非线性惯性权重粒子群算法.pdf
即可在Pytorch中使用样本权重。 eg: 对于单个样本:loss = – Q * log(P),如下: P = [0.1,0.2,0.4,0.3] Q = [0,0,1,0] loss = -Q * np.log(P) 增加样本权重则为loss = – Q * log(P) *sample_weight P = [0.1,...
带有非线性惯性权重和柯西变异的粒子群优化算法.pdf
yolov7 darknet 80分类原始权重的C#调用,使用opencvsharp载入weight和cfg文件。
【优化求解】基于非线性动态自适应惯性权重粒子群算法(IPSO)Matlab源码.md
粒子群算法中惯性权重非线性调节策略,李丽,薛冰,惯性权重是粒子群优化算法(Particle Swarm Optimization,PSO)中的重要参数,可以有效的平衡算法的全局搜索能力和局部搜索能力,提高算法