课程1B

概述

  • 课程1B主要讲解了Android UI的ViewGroups(视图组)、LinearLayout(线性布局)、RelativeLayout(相对布局),Portrait Mode(竖屏模式)、Landscape Mode(横屏模式)以及layout_weight(布局权重)在UI布局中的用处。
  • 此外,本次课程简要提到了xml命名空间,能够方便变量名的管理和使用以及避免变量名字冲突。

ViewGroups

  • 视图组控件引出了parent view、child view以及sibling view的概念;它们分别指的是两个视图间的父、子、兄弟关系,是一个相对概念,至少有两个对象参与。
  • 需要注意的是,也是在1B课程中反复强调过的,ViewGroups本身也是一种视图

LinearLayout

  • 应用线性布局,首先应当设置布局中元素的朝向(orientation):具体的取值有vertical、horizontal,分别指定布局中元素按排列和按排列:
android:orientation="vertical"
android:orientation="horizontal"

RelativeLayout

  • 相对布局中的控件中的默认位置是屏幕的最左上方。
  • 相对布局并不需要android:orientation属性。
  • 相对布局能够以指定相对位置的方式来设置布局中各元素(控件)之间的相对位置,交给开发者自由定制的空间远比LinearLayout大,当然相应地也会拥有更多属性,变得更复杂一些。
  • 需要强调,在应用相对布局进行Android UI设计前,要能够理解相对布局中的"相对"在不同的代码上下文中可能会具有不同的含义。


    比如,
    1. ”相对“指的是相对于父视图:
	android:layout_alignParentTop=“true”
android:layout_alignParentLeft="true"
android:layout_alignParentRight="false"
android:layout_alignParentBottom="false"
android:layout_centerHorizontal="false"
android:layout_centerVertical="false"

     属性android:layout_centerHorizontal、android:layout_centerVertical也是相对于父视图的,分别设置控件位于父视图的水平居中以及垂直居中的位置。

      2. ”相对“指的是相对于锚视图(anchor view):锚视图是固定的,其它视图可以指定与锚视图的相对位置。

	android:layout_toLeftOf=“@id/some_id1_prev_defined”
android:layout_toRightOf=“@id/some_id2_prev_defined”
  • [提示1] RelativeLayout的其他参数还有很多,搜索android RelativeLayout layout Params等关键字能够获取到关于相对布局的详细文档或者API参考手册。

    开发者应该在平时注意锻炼自己查找资料,解决问题的能力,课程中介绍到的Android Developers就是很好的Android开发的参考网站。

Margin&Padding

  • 外边距(Margin)、内边距(Padding)的概念在UI设计中很早就出现了。
  • Padding控制单个控件内部元素和该控件边界之间的距离。
    • 比如说,TextView中的文本与四周边界的距离的控制:
android:padding="8dp"

      或者控制文本与某一边界之间的距离:

android:paddingLeft="8dp"
android:paddingRight="8dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"

- Margin属性的使用的前提是,必须位于一个视图组中,否则就没有“外”边距的存在了。即外边距是相对两个父子(parent-child)控件之间而言的。
- 用外边距控制两个控件之间的相对位置:

android:layout_margin="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"

    第一个表达式与后四个的效果是等价,都是设置两个父子控件之间的**四周**的边距。

  • Margin与Padding之间的对比

下面这张自己画的图应该能够比较清晰地示意二者的区别,蓝色方块是一个ViewGroups控件,也就是说它是绿色方块的父视图(Parent View),

这是外边距存在的前提。

![Fig1.Margin与Padding的对比](http://images2015.cnblogs.com/blog/1161127/201705/1161127-20170507221744632-1532325254.png)
**图1.Margin与Padding的对比**

1B课程笔记分享_StudyJams_2017的更多相关文章

  1. 1C课程笔记分享_StudyJams_2017

    课程1C 概述 课程1C是创建一个生日贺卡应用的实践课程,所以本篇笔记分享主要记录个人的实践过程,此外分享一些比较零散的知识点. Drawable文件夹 Drawable文件夹是Android项目统一 ...

  2. 1A课程笔记分享_StudyJams_2017

    1A课程 概述 课程1A主要讲解了Android UI的三种基本控件:TextView.ImageView以及Button.笔记的主体内容主要根据课程内容的讲解顺序来组织,此外我对一些个人比较感兴趣的 ...

  3. 3A课程笔记分享_StudyJams_2017

    课程3A-面向对象编程(上) 概述 面向对象的思想在当今的软件开发中占据着主导地位. Java是一门完全面向对象的语言,是一种天然的分布式互联网软件的开发语言,在当今企业级应用中占据绝对领先地位,也是 ...

  4. 2C课程笔记分享_StudyJams_2017

    课程2C-实践:创建交互式应用 概述 课程2C的内容主要是练习巩固2A.2B中讲解的内容,并设计实现一款篮球比赛的计分板应用及其界面的美化. Warm-Up:准备活动 新建项目PracticeSet2 ...

  5. 2B课程笔记分享_StudyJams_2017

    课程2B-创建交互式应用(下) 概述 课程2B的内容主要包括:使用变量来更新欲显示在屏幕上的内容,为按钮添加事件响应(联系XML属性与Java方法)逻辑等. 后续的课程会逐步深入地讲解使用Java开发 ...

  6. 2A课程笔记分享_StudyJams_2017

    课程2A 概述 课程2A.2B的内容主要是关于创建交互式应用的基础知识.之前的L1课程主要是Android UI的基础设计知识,基本上没涉及到编程. 2A的讲解主要包括:使用变量来更新欲显示在屏幕上的 ...

  7. 3B课程笔记分享_StudyJams_2017

    昨晚才发现 Study Jams China的官方论坛也支持MarkDown,所以直接发在了那上面.http://www.studyjamscn.com/thread-21807-1-1.html

  8. L4课程_Firebase_笔记分享_StudyJams_2017

    最近才发现Study Jams China的官方论坛也支持MarkDown,所以就直接把笔记发在了那儿. http://www.studyjamscn.com/thread-21855-1-1.htm ...

  9. 深度学习课程笔记(一)CNN 卷积神经网络

    深度学习课程笔记(一)CNN 解析篇 相关资料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html 首先提到 Why CNN for I ...

随机推荐

  1. free web rich code eidtor

    free web rich code eidtor https://i.cnblogs.com/Preferences.aspx tiny code-editor https://apps.tiny. ...

  2. Codeforces Round #234 (Div. 2)

    A. Inna and Choose Options time limit per test 1 second memory limit per test 256 megabytes input st ...

  3. node.js 利用流实现读写同步,边读边写

    //10个数 10个字节,每次读4b,写1b let fs=require("fs"); function pipe(source,target) { //先创建可读流,再创建可写 ...

  4. POJ 1328 Radar Installation 贪心算法

    Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...

  5. 1010 过河卒 2002年NOIP全国联赛普及组codevs

    1010 过河卒  2002年NOIP全国联赛普及组codevs 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点 ...

  6. 使用jconsole监控远程JVM

    使用jconsole监控远程JVM 学习了:https://www.linuxidc.com/Linux/2015-02/113420.htm https://www.cnblogs.com/thin ...

  7. shell中获取时间,作为文件夹格式

    近期写了一个小程序,须要用到时间.遍历作为文件夹的一部分 #!/bin/bash for i in {1..30} do date=`date +%Y/%m/%d -d " $i days ...

  8. oc84--单利

    // Tools.h #import <Foundation/Foundation.h> @interface Tools : NSObject<NSCopying, NSMutab ...

  9. YTU 2732:3798-Abs Problem

    2732: 3798-Abs Problem 时间限制: 1 Sec  内存限制: 128 MB  Special Judge 提交: 167  解决: 60 题目描述 Alice and Bob i ...

  10. anaconda安装python三方包,以tensorflow为例

    Anaconda概述 Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存.切 ...