Android:Layout_weight的理解
2015-07-02 15:31
489 查看
最近老是纠结布局参数很难记,索性遇到一个就弄懂一个吧
Layout_weight这个参数似乎不太好理解,尤其当layout_width="wrap_content"和layout_width=“fill_parent"时的区别,
添加权重,
两个文本框的都是 layout_width=“wrap_content”时,并添加权重,会得到以下效果
统先给2个TextView分配他们的宽度值wrap_content(宽度足以包含他们的内容ONE,THREE即可),然后会把剩下来的屏幕空间按照1:2的比列分配给2个textview,所以就出现了上面的图像。
两个文本框的都是 layout_width=“fill_parent”时,并添加相同的权重,会得到以下效果
你会发现1的权重小,反而分的多了,这是为什么呢???
系统先给2个textview分配他们所要的宽度fill_parent,也就是说每一个TextView都是填满他的父控件,这里就是屏幕的宽度。
那么这时候的剩余空间=1个parent_width-2个parent_width=-1个parent_width (parent_width指的是屏幕宽度 )
那么第一个TextView的实际所占宽度应该=fill_parent的宽度,即parent_width + 他所占剩余空间的权重比列1/3* 剩余空间大小(-1parent_width)=2/3parent_width
同理第二个TextView的实际所占宽度=parent_width + 2/3*(-2parent_width)=1/3parent_width;
所以就是2:1显示了
总结:这里的Layout_weight占用剩余空间的比重的概念很重要,这样无论layout_weight是怎样很容易就能得到布局情况了。
Layout_weight这个参数似乎不太好理解,尤其当layout_width="wrap_content"和layout_width=“fill_parent"时的区别,
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center" android:background="#aabbcc" android:gravity="top" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="1dp" android:background="#aa0000" android:text="ONE" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="1dp" android:background="#aa0000" android:text="THREE" /> </LinearLayout>未加Layout_weight时,仅仅包住其内容即可:
添加权重,
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="200dp" android:layout_height="200dp" android:layout_gravity="center" android:background="#aabbcc" android:gravity="top" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="1dp" android:layout_weight="1" android:background="#aa0000" android:text="ONE" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="1dp" android:layout_weight="2" android:background="#aa0000" android:text="THREE" /> </LinearLayout>
两个文本框的都是 layout_width=“wrap_content”时,并添加权重,会得到以下效果
统先给2个TextView分配他们的宽度值wrap_content(宽度足以包含他们的内容ONE,THREE即可),然后会把剩下来的屏幕空间按照1:2的比列分配给2个textview,所以就出现了上面的图像。
两个文本框的都是 layout_width=“fill_parent”时,并添加相同的权重,会得到以下效果
你会发现1的权重小,反而分的多了,这是为什么呢???
系统先给2个textview分配他们所要的宽度fill_parent,也就是说每一个TextView都是填满他的父控件,这里就是屏幕的宽度。
那么这时候的剩余空间=1个parent_width-2个parent_width=-1个parent_width (parent_width指的是屏幕宽度 )
那么第一个TextView的实际所占宽度应该=fill_parent的宽度,即parent_width + 他所占剩余空间的权重比列1/3* 剩余空间大小(-1parent_width)=2/3parent_width
同理第二个TextView的实际所占宽度=parent_width + 2/3*(-2parent_width)=1/3parent_width;
所以就是2:1显示了
总结:这里的Layout_weight占用剩余空间的比重的概念很重要,这样无论layout_weight是怎样很容易就能得到布局情况了。
相关文章推荐
- android GPS度分秒与double之间的相互转化
- android 动画资源
- 被谷歌控制的 Android 不是好 Android?
- 在Android原生输入法LatinIME中添加自定义按键
- 【转】Android下编译jni库的二种方法(含示例)
- 【转】android4.1.2 CTS测试总结
- 【转】Android 源码下利用jni编译自己的项目(参考系统development/samples/SimpleJNI)
- 【转】Android用NDK和整套源码下编译JNI的不同
- Android开发:使用ViewDragHelper实现抽屉拉伸效果
- 详述Google针对Android平板App发布的十大开发准则
- Android 长按电源键和短按电源键的详细处理流程
- 【Android自定义控件】支持多层嵌套RadioButton的RadioGroup
- android自定义组合控件onFinishInflate和onSizeChanged的区别
- Android导入第三方静态库.a编译成动态库.so
- Android动画之图片动画
- android 实用代码
- Android动画之Interpolator和AnimationSet
- android属性动画—自己的测试代码
- android动画之一Tween动画
- Android Studio创建库项目及引用