各种注意问题
来源:互联网 发布:淘宝下架的宝贝在哪 编辑:程序博客网 时间:2024/05/29 08:35
文章截取自:http://blog.csdn.net/kost_/article/details/13020401
文章是说:我放一个button在画面里面,位置居中,说白了就是左右预留空间要一样多,之前在公司有个项目中画面需要调整类似于这个,当时别人是用java动态设置宽高,达到布局,我用xml实现时,如果我要实现这个我估计会分成四等分,左右塞一个view占据,这样实现。但是傻瓜办法。
weight属性一直在使用,但总是没有静下心来仔细揣摩一下,有些地方还是忽略了。刚刚看了才恍然大悟。
忌浮躁、
看上去很简单对不对?现在让我们花五分钟的时间来实现它。在这个Hack中,我们来看看如何用LinearLayout的android:weightSum属性与android:layout_weight这两个属性来实现这个效果。这看上去是一个很简单的任务,但是在我给Android开发者的面试中,好多的人都不知道实现它的最好的方法是什么。
1.1 结合使用weightSum属性与layout_weight属性
Android设备有不同的屏幕分辨率的大小,所以开发者在写xml文件的时候需要用某种方式来适配这些不同大小的屏幕。为了适配屏幕大小写死代码是非常不可取的做法,所以我们需要一些其他的办法来组织我们的View。
我们将会用到weightSum和layout_weight这两个属性来填充我们的布局Layout,android:weightSum的文档中描述了一种跟我们要达到的目的类似的场景:
定义最大的WeightSum,如果没有注明,这个值就是把所有子view的layout_weight相加的和。这样如果我们想让一个child占据50%的可用空间,我们只要将它的android:layout_weight属性设定值为0.5,然后将android:weightSum设为1.0即可。
假想一下,我们需要往一个盒子中放东西,weightSum代表的就是盒子可用空间的百分比,layout_weight表示的就是每个view所占据的百分比。举个例子来说,盒子的weightSum为1,我们需要放置A和B这两个物品,A的layout_weight的为0.25,B的weight_sum为0.75。这样的话A就占据了盒子的25%的空间,B占据了盒子的75%的空间。
在开始我们谈到所要实现的场景跟这个是很类似的,我们给parent一个特定的weightSum,然后给这个Button的layout_weight一半的值即可,XML文件如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="#FFFFFF"
- android:gravity="center"
- android:orientation="horizontal"
- android:weightSum="1">
- <Button
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="0.5"
- android:text="Click me"
- />
- </LinearLayout>
LinearLayout读取了它自己的android:weightSum属性,获取到他的所有的child的weight应该是1。他的第一个也是唯一的一个child就是这个Button,但是由于Button的layout_weidth设为了0dp,所以LinearLayout就知道了需要根据weight属性来判断这个button的宽度。Button的layout_weight设为了0.5,所以这个Button将准确的占据50%的位置。
一个可能的例子是,Linearlayout的宽为200dp,weightSum设为1。那么Button的宽度将会被如下计算:
Button's width + Button's weight * 200 / sum(weight)
由于Button的width是0dp,button的weight是0.5,sum(weight)是1,所以结果如下:
0 + 0.5 * 200 / 1 = 100
1.2 总结
在你想按比例来分配布局的时候,用Linearlayout的weight属性是一个比写死代码再好不过的方法了。如果你在用Honeycomb的Fragments,你会发现大部分的例子都是将Fragment按照weight来进行布局的。懂得如何使用weight属性将会使你增添一个重要的技能。
1.3 相关链接
http://developer.android.com/reference/android/widget/LinearLayout.html
- 各种注意问题
- 【问题】各种背景色&UIScrollView注意问题
- 关于poi导出excel时的各种注意问题
- UINavigationController各种注意点
- 各种注意点
- SocketChannel---各种注意点
- 注意问题
- 各种排序及其注意点
- JS的各种注意点
- 各种问题
- 各种问题!!!
- 各种问题
- eclipse各种卡各种问题。
- 各种算法里面需要注意的东西
- 数据设计注意问题
- 使用指针注意问题
- xml注意问题
- VSS使用注意问题
- c语言main函数的参数
- javascript 好文章
- c语言的const关键字
- 定义指针函数,输入字符串求其中的字母、数字和其它字符的个数
- 使用WINDBG检测内存泄漏
- 各种注意问题
- 关于手册的页码和有效页清单 - LEP
- python mongo数据库出错解决及pymongo操作
- iOS安全攻防(一):Hack必备的命令与工具
- java教程(三)初识J2ee十三个规范
- QT坐标系统
- 基于用户的推荐算法
- 计算机 小知识点 文件夹--资源共享
- 很好的vi教程(接合例子)