【Android应用开发技术:用户界面】用户界面布局技巧

原创 2015年07月27日 11:49:47

作者:郭孝星
微博:郭孝星的新浪微博
邮箱:allenwells@163.com
博客:http://blog.csdn.net/allenwells
Github:https://github.com/AllenWells

【Android应用开发技术:用户界面】章节列表

本篇文章介绍在做界面布局时一些技巧,使得布局更加合理而高效。

一 让控件填满剩余宽度或高度

定义了一个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的宽度设置为0dp。如果你设置为”wrap_content”作为宽度,系统需要自己去计算这个部件所占有的宽度,而此时的因为你设置了权重,所以系统自动会占据剩余空间,EditText的宽度最终成了不起作用的属性。

改动后的效果如下图所示:

这里写图片描述

【Android应用开发技术:用户界面】用户界面基本原理

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://githu...
  • AllenWells
  • AllenWells
  • 2015年07月31日 17:07
  • 1161

【Android应用开发技术:用户界面】ViewAnimator

作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWel...
  • AllenWells
  • AllenWells
  • 2015年05月07日 21:05
  • 486

【Android应用开发技术:用户界面】ImageView

作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWel...
  • AllenWells
  • AllenWells
  • 2015年05月07日 21:00
  • 415

【Android应用开发技术:用户界面】TextView

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://githu...
  • AllenWells
  • AllenWells
  • 2015年05月07日 21:02
  • 670

【Android应用开发技术:用户界面】布局管理器

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://githu...
  • AllenWells
  • AllenWells
  • 2015年08月17日 17:19
  • 1190

【Android应用开发技术:用户界面】SurfaceHolder

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://githu...
  • AllenWells
  • AllenWells
  • 2015年07月31日 16:52
  • 723

【Android应用开发技术:用户界面】ProgressBar

作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWel...
  • AllenWells
  • AllenWells
  • 2015年05月07日 21:02
  • 415

【Android应用开发技术:用户界面】SurfaceView

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://githu...
  • AllenWells
  • AllenWells
  • 2015年07月31日 16:51
  • 690

【Android应用开发技术:用户界面】AdapterView

作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWel...
  • AllenWells
  • AllenWells
  • 2015年05月07日 21:04
  • 479

【Android应用开发技术:用户界面】Menu

作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWel...
  • AllenWells
  • AllenWells
  • 2015年05月07日 21:03
  • 465
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Android应用开发技术:用户界面】用户界面布局技巧
举报原因:
原因补充:

(最多只允许输入30个字)