Android布局注意事项
来源:互联网 发布:无主之地2人工智能 编辑:程序博客网 时间:2024/05/24 23:12
Android的布局还是有一定的讲究的。如何设置布局的属性也要好好学习,刚学习的时候对不居中full_content,wrap_content,match_parent,0dp,layout_weight搞不清楚,终于在曲曲折折中摸索清楚,从Android training course in Chinese中学到了不少,果然是精华。
让输入框充满整个屏幕的宽度
当前EditText和Button部件只是适应了他们各自内容的大小,如下图所示:
这样设置对按钮来说很合适,但是对于文本框来说就不太好了,因为用户可能输入更长的文本内容。因此如果能够占满整个屏幕宽度会更好。LinearLayout使用权重的属性来达到这个目的,你可以使用android:layout_weight属性来设置。
你可以根据每一个部件所占的空间来指定权重值的大小,它的总数是有同级别的部件来决定的。就类似于饮料的成分配方:“两份伏特加酒,一份咖啡利口酒”,意思就是这个酒中伏特加酒占三分之二。例如,你设置一个View的权重是2,另一个View的权重是1,那么总数就是3,这时第一个View占据2/3的空间,第二个占据1/3的空间。如果你再加入第三个View,权重设为1,那么第一个View(权重为2的)会占据1/2的空间,剩余的另外两个View各占1/4。(请注意,使用权重的前提一般是给View的宽或者高的大小设置为0dp,然后系统根据上面的权重规则来计算View应该占据的空间。但是很多情况下,如果给View设置了match_parent的属性,那么上面计算权重时则不是通常的正比,而是反比,也就是权重值大的反而占据空间小)。
对于所有的View默认的权重是0,如果你只设置了一个View的权重大于0,那么这个View将占据除去别的View本身占据的空间的的所有剩余空间。因此这里设置EditText的权重为1,使其能够占据除了按钮之外的所有空间。
<EditText android:layout_weight="1" ... />
为了提升布局的效率,在设置权重的时候,你应该把EditText的宽度设置为0dp。如果你设置为"wrap_content"作为宽度,系统需要自己去计算这个部件所占有的宽度,而此时的因为你设置了权重,所以系统自动会占据剩余空间,EditText的宽度最终成了不起作用的属性。
<EditText android:layout_weight="1" android:layout_width="0dp" ... />
下图展示了设置权重时候的结果
现在看一下完整的布局文件内容:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <EditText android:id="@+id/edit_message" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="@string/edit_message" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" /></LinearLayout>
- Android布局注意事项
- android帧布局以及注意事项
- android PercentFrameLyout 百分比布局 使用及注意事项
- Android写xml布局时的注意事项
- Android手势识别 Camera 预览界面上显示文字 布局注意事项(merge布局)
- Android手势识别 Camera 预览界面上显示文字 布局注意事项(merge布局)
- div css 布局注意事项
- cakephp2.0布局注意事项
- 相对布局注意事项
- CSS div布局注意事项
- 关键词布局注意事项
- CSS+DIV布局注意事项
- 四大布局的注意事项
- iOS 自动布局注意事项
- flex布局的注意事项
- 开关电源布局布线注意事项
- Bootstrap栅格布局的注意事项
- 用tableView自动布局注意事项
- Linux下tomcat的配置
- 照片如何转换成pdf
- 黑马程序员——Java概述,基础学习第一天总结
- 分布式内存缓存系统memcached的安装配置及基本命令
- 还原数据库出错的解决方法
- Android布局注意事项
- Win7实现内录声音
- 什么是大牛,我彻底服了,大牛讲解信号与系统 .
- 在路上
- sublime text快捷键MyEclipse风格
- OOBInline属性为false,server接收了client通过sendUrgentData 发送的紧急数据包
- 线性时间冰山查询算法(Linear-time Iceberg Query Algorithm )
- java 程序包不存在
- Cpp 调用sql server 存储过程时不返回output参数解决办法