android中关于weight宽度的算法
2016-04-05 16:44
519 查看
在之前的学习中一直对weight的宽度存在误解导致有些时候控件的宽度与自己设想的事与愿违,今天刚好看到weight宽度的算法,在这里记录一下
在这个例子中或许有人一开始会和我一样存在这样的误解:Button1的宽度占1/3 Button2的宽度占2/3
但是在实际中却恰好相反
weight计算出来的宽度 = 控件的宽度+剩余空间所占百分比的宽度
假设屏幕的宽度是L
Button1它的宽度是“match_parent” 即L
同理Button2它的宽度也是L
Button1的实际宽度 = L+(L-2L)*1/3 = 2/3L
Button2的实际宽度 = L+(L-2L)*2/3 = 1/3L
剩余空间 = 屏幕宽度 - Button1 宽度 - Button2 宽度 = L - 2L = -L
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="match_parent"> <Button android:id="@+id/Button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <Button android:id="@+id/Button2" android:layout_weight="2" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
在这个例子中或许有人一开始会和我一样存在这样的误解:Button1的宽度占1/3 Button2的宽度占2/3
但是在实际中却恰好相反
weight计算出来的宽度 = 控件的宽度+剩余空间所占百分比的宽度
假设屏幕的宽度是L
Button1它的宽度是“match_parent” 即L
同理Button2它的宽度也是L
Button1的实际宽度 = L+(L-2L)*1/3 = 2/3L
Button2的实际宽度 = L+(L-2L)*2/3 = 1/3L
剩余空间 = 屏幕宽度 - Button1 宽度 - Button2 宽度 = L - 2L = -L
相关文章推荐
- Android视图优化之Merge,ViewStub基本使用
- 打开系统图库
- 自定义view之圆点progressBar
- [Android] 为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?
- Android中TextWatcher afterTextChanged无限迭代异常
- android 动画代码实现
- Android的性能模式:救援技巧
- Android 简单三级文字列表
- 管理照相机-控制相机硬件(摘自Android官方培训课程中文版(v0.9.5))
- Android应用中通过Layout_weight属性用ListView实现表格
- Android Studio 1.3.0 以上gradle proxy代理设置异常
- [安卓开发笔记二]android Studio通过jni调用C++代码
- Android之AsyncTask学习
- I.MX6 Android iperf3 porting failed
- 【Android 基础】Animation 动画介绍和实现
- 29.Android展示PDF文件
- 关于fragment切换失效问题
- android shape的使用
- Android ListView相关技术
- 模仿美团点评的Android应用中价格和购买栏悬浮固定的效果