在1.1中学习了多种控件,用于丰富界面。但是如何将这些控件按照一定的顺序来排列?这里就运用到了今天学习的四种基本布局。布局简而言之,就是容纳控件的一个容器,不同的布局拥有不同的排布规律,按照这些规律摆放控件,形成界面。

1. 线性布局(LinearLayout)

线性布局,顾名思义,就是内部的控件按照线性规律(水平方向,垂直方向)排布。

android:orientation="vertical"-----垂直方向

android:orientation="horizontal"-----水平方向

垂直方向,即控件放置顺序,以从上到下顺序排布。

水平方向,即控件放置顺序,以从左到右顺序排布。

默认状态下,以horizontal--水平方向为准。

值得注意的是,当vertical垂直方向排布时,控件的layout_height不能为match_parent,这样的话一个控件就将整个垂直方向占据。同理,当为horizontal水平方向排布时,控件的layout_width不能为match_parent,否则将占据整个水平方向。

相关属性:

(1)android:layout_gravity与android:gravity的区别

android:layout_gravity是该控件在整个布局中的对齐方式,可选值一般为top,center,bottom等,注意的是,当排列方式为vertical时,对齐方式只在水平方向上生效,反之亦然。

android:gravity用于指定文字在控件中的对齐方式。

(2)android:layout_weight

个人理解,将weight理解为权重的意思。

使用weight属性时,规范写法是,将layout_width定义为0dp,layout_height依然定义为wrap_content。

然后就是weight的使用了。

以水平排列为例,在该布局中添加两个控件。

<Edittextandroid:id="@+id/input_message"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:hint="请输入"
/><Buttonandroid:id="@+id/send"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="send"
/>

在这里,两个控件将按1:1的宽度,水平排列。

weight计算方法为,将所有weight指定值加一起,某控件所占比例即为(该控件weight值/总值)。

2. 相对布局(RelativeLayout)

相对布局,顾名思义,即该种布局中的控件,主要以相对位置进行排列。因此,在相对布局中,属性较多。

(1)相对父布局(parent)定位

android:layout_alignParentLeft="true"------相对于屏幕左边

android:layout_alignParentRight="true"------相对于屏幕右边

android:layout_alignParentTop="true"------相对于屏幕上边

android:layout_alignParentBottom="true"------相对于屏幕下边

android:layout_centerInParent="true"------相对于屏幕中间

(2)相对控件定位

android:layout_above="@id/button3"----在id为button3的控件上方

android:layout_below="@id/button3"----在id为button3的控件下方

android:layout_toLeftOf="@id/button3"----在id为button3的控件左方

android:layout_toRightOf="@id/button3"----在id为button3的控件右方

3. 帧布局(FrameLayout)

该种布局应用场景很少,且并无方便的定位方式,所有的控件都将默认放置于左上角。

若要指定控件的对齐方式,与线性布局中的一样,可以通过layout_gravity属性来定位位置。

该种布局在碎片化管理中应用较多。

4. 百分比布局

在前面三种布局中,可以发现,只有线性布局可以通过weight实现按照比例大小放置,其余两种均不可以。因此,基于此原因,android引入了一种新的布局方式解决此问题。

百分比只为FrameLayout和RelativeLayout进行功能扩展,具体使用方式如下。

(1)在项目的build.gradle中添加百分比库的依赖

dependcies {compile fileTree(dir:'libs',include:['*.jar'])compile 'com.android.support:appcompat-v7.24.2.1'compile 'com.android.support:percent:24.2.1'testCompile 'junit:junit:4.12'
}

在修改之后,再次同步,将新库引入到项目中。

(2)按比例进行分布

android:layout_widthPercent='50%'----控件宽占据布局的50%

android:layout_heightPercent='50%'----控件高占据布局的50%

1.2 UI设计之基本布局相关推荐

  1. Android实战开发--小慕笔记UI设计(Fragment布局的使用)

    目录 前言 一.需求 二.主要步骤 1.Fragment容器操作 2.封装删除工具类 三.关键代码 四.效果展示 前言 本项目为安卓基础实战开发,利用Fragment进行小慕笔记UI设计,学习之前需要 ...

  2. 了解CSS盒模型、页面布局在UI设计中的作用

    我司实行UI规范已过去一段时间,页面风格已逐渐实现统一.但近期在实际业务开发中发现,在UI验收环节不断出现小数值调整情况,极大的延长验收时间. 在和UI设计人员探讨后发现设计者对前端盒模型概念不甚了解 ...

  3. ui设计移动端字体适配_超全面的移动端UI 设计规范整理汇总

    很多新人在开始做移动端UI设计的时候,往往对界面的一些尺寸规范不是十分清楚,很多时候都是凭借自己的感觉和经验去绘制界面,心里并没有一个清晰的概念,导致做出来的页面总是不那么尽如人意.本文整理汇总了一些 ...

  4. ui设计移动端字体适配_移动端UI设计规范全方位汇总(附演示PPT下载)

    很多新人在开始做移动端UI设计的时候,往往对界面的一些尺寸规范不是十分清楚,对做UI设计的基础概念也没有清晰的认识,很多时候都是凭借自己的感觉和经验去绘制界面,心里并没有一个清晰的概念,导致做出来的页 ...

  5. ui设计移动端字体适配_超全面的UI设计规范整理汇总(包含iPhone X适配)

    写在前面 很多新人在开始做移动端UI设计的时候,往往对界面的一些尺寸规范不是十分清楚,很多时候都是凭借自己的感觉和经验去绘制界面,心里并没有一个清晰的概念,导致做出来的页面总是不那么尽如人意.本文整理 ...

  6. ui设计移动端字体适配_超全面的移动端UI设计规范整理汇总(包含iPhone X适配)...

    写在前面 很多新人在开始做移动端UI设计的时候,往往对界面的一些尺寸规范不是十分清楚,很多时候都是凭借自己的感觉和经验去绘制界面,心里并没有一个清晰的概念,导致做出来的页面总是不那么尽如人意.本文整理 ...

  7. html卡片布局按钮,Material Design风格动态网格卡片布局UI设计

    这是一款效果非常炫酷的Material Design风格动态网格卡片布局UI设计效果.在该效果中鼠标滑过卡片时会有阴影效果,当浏览器尺寸改变时,卡片大小会随着改变,整个网格布局有动态变化效果. 使用方 ...

  8. QT入门学习之UI设计布局管理

    1. QT Designer 可视化UI设计及布局管理 创建一个Qt Widget Application项目demo2.在创建窗体时选择基类QDialog,生成的类命名为QWDialog,并选择生成 ...

  9. android 布局可大可小,UI设计教程之:ios与android ui适配(将IOS UI转换成Android经验畅谈)...

    内容提要:这是UI设计系列教程之ios与android ui适配经验畅谈.文章作者介绍了自己将IOS UI转换成Android经验,包括:不要直接转换.了解单位和组件缩放格式.屏幕尺寸DP和像素的换算 ...

最新文章

  1. java执行mongodb语句_java下执行mongodb
  2. windows Perl环境安装与Hello World
  3. java后台传一个对象到前台_前台判断对象中的一个布尔值_springMVC面试题
  4. 下列哪个适合做链栈_朋友圈人格图鉴:三天可见 vs 全部可见,哪个更适合做恋人?...
  5. PHP格子在线自动发卡网源码 全新一键安装版
  6. python bootstrap安装_Python+Django+Bootstrap 框架环境搭建
  7. 5分钟制作Unity过场动画 | Timeline
  8. 大厂程序员年薪_年薪25万一线大厂程序员,年薪10万三线城市大专讲师,怎么选...
  9. 关于IE浏览器以及Firefox下冒泡事件的响应层级
  10. 在马来西亚做it总监_IT行业40岁以上的人都去哪儿了?
  11. python-socket作业
  12. 瀚云平台kafka简单原理
  13. 【虚拟机装黑苹果(第一弹)】DiskMaker X制作macOS Mojave 10.14.x的U盘启动盘
  14. 伊利诺伊香槟分校计算机排名,伊利诺伊大学香槟分校计算机专业排名好不好?_托普仕留学...
  15. 4.OC仿写知乎客户端
  16. 蓝牙耳机电脑玩游戏进入没声音设置
  17. windows 2008 r2 sharepoint 2007 文档库 在windows资源管理器打开问题
  18. “一见杨过误终身” ——体验式营销,你也可以创造传奇_营销人论坛
  19. Vue新建项目与npm使用.
  20. vue 使用animate.css动画库

热门文章

  1. 哥白尼气候数据ERA5数据集——大气数据研究
  2. 两个或多个有序数组合并为一个有序数组
  3. 联通服务器维护破解限速,网速1mbps(联通限速1mbps解除方法)
  4. 通过java程序模拟实现地铁票价2+2=12(r3笔记第94天)
  5. 大学生求职的互联网“围城”:被神化的“大厂梦”
  6. 基于java实现bilibili视频爬虫
  7. 项目经理是如何做到每月“0”电话费的
  8. 阿里妈妈-网络广告位投资策略
  9. 何新生的英语史(三)—有干劲、入门阶段
  10. 深度估计 DenseDepth 笔记