栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

《Android移动应用基础教程》学习笔记(二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《Android移动应用基础教程》学习笔记(二)

Ch 2 Android常见界面布局 2.1 View视图


ViewGroup 和 View 控件的包含关系

Android应用的每个界面的根元素必须有且只有一个ViewGroup容器。

2.2 界面布局编写方式 2.2.1 在XML文件中编写布局

Android可以使用XML布局文件控制界面布局,从而有效地将界面中布局的代码和Java代码分离,使程序的结构更加清晰

2.2.2 在Java代码中编写布局

在Android中所有布局和空间的对象都可以通过new关键字创建出来,将创建的View控件添加到ViewGroup布局中,从而实现View控件在布局界面中显示。

不管使用哪种方式编写布局,它们控制Android用户界面行为的本质是完全一样的。

2.3 常见界面布局 2.3.1 布局的通用属性

Android系统提供的五种常用布局直接或间接继承自ViewGroup,因此也常用布局支持在ViewGroup中定义的属性。

  1. android:id
    用于设置当前布局的唯一标识。通过"@+id/属性名称"定义。
    在R.java文件中会自动生成对应的int值。在Java代码中通过为findViewById()方法传入该int值来获取该布局对象。
  2. android:layout_width
    用于设置布局宽度
    1. fill_parent: 该布局宽度与父容器宽度相同。
    2. match_parent:与fill_parent相同,Android2.2开始推荐使用。match_parent
    3. wrap_content:该布局宽度恰好能包裹内容。
  3. android:layout_heigh
    用于设置布局高度
    1. fill_parent: 该布局宽度与父容器高度相同。
    2. match_parent:与fill_parent相同,Android2.2开始推荐使用。match_parent
    3. wrap_content:该布局高度恰好能包裹内容。
  4. android:background
    用于设置布局背景。
  5. android:layout_margin
    用于设置当前布局与屏幕边界、周围布局或控件的距离。
    • android:layout_marginTop
    • android:layout_marginBottom
    • android:layout_marginLeft
    • android:layout_marginRight
  6. android:layout_padding
    用于设置当前布局内控件与该布局的距离。
    • android:layout_paddingTop
    • android:layout_paddingBottom
    • android:layout_paddingLeft
    • android:layout_paddingRight

Android系统提供的五种常用布局必须设置android:layout_width和android:layout_height。

2.3.2 RelativeLayout相对布局

RelativeLayout通过相对定位的方式指定子控件的位置。
定义格式:



Relativelayout中子控件属性

属性名称功能描述
android:layout_centerInParent设置当前控件位于父布局的中央位置
android:layout_centerVertical设置当前控件位于父布局的垂直居中位置
android:layout_centerHorizontal设置当前控件位于父布局的水平居中位置
android:layout_above设置当前控件位于某控件上方
android:layout_below设置当前控件位于某控件下方
android:layout_toLeftOf设置当前控件位于某控件左侧
android:layout_toRightOf设置当前控件位于某控件右侧
android:layout_alignParentTop设置当前控件是否与父控件顶端对齐
android:layout_alignParentLeft设置当前控件是否与父控件左端对齐
android:layout_alignParentRight设置当前控件是否与父控件右端对齐
android:layout_alignParentBottom设置当前控件是否与父控件底端对齐
android:layout_alignTop设置当前控件的上边界与某控件的上边界对齐
android:layout_alignBottom设置当前控件的下边界与某控件的下边界对齐
android:layout_alignLeft设置当前控件的左边界与某控件的左边界对齐
android:layout_alignRight设置当前控件的右边界与某控件的右边界对齐

在Relativelayout布局中定义的控件默认与父布局左上角对齐。

布局和控件的宽高

为了让Android程序拥有更好的屏幕适配能力,在设置控件和布局宽高时最好使用match_parent或wrap_content。

2.3.3 LinearLayout线性布局

LinearLayout通常指定布局内的子空间水平或竖直排列。
定义格式:



  1. 属性说明
    1. android:orientation
      用于设置LinearLayout布局中控件的排列顺序,可选vertical和horizontal。
    2. android:weight
      通过设置权重使布局内的控件按照权重比显示大小,在进行屏幕适配时起关键作用。
  2. 为控件分配权重

LinearLayout布局中的android:layout_width不可设为warp_content,因为LinearLayout优先级比Botton高,如果设置warp_content,则Button控件的android:layout_weight会失去作用。设置了Button控件的android:layout_weight属性时,控件的android:layout_width一般设置为0dp才会有权重占比效果。

2.3.4 TableLayout表格布局

TableLayout采用行、列的形式来管理控件。通过在TableLayout布局中添加TableRow布局或控件来控制表格行数,在TableRow布局中添加控件来控制表格列数
XML布局文件中定义表格布局基本语法格式:


   
      UI控件
   
   UI控件
   ......

TableLayout继承自LinearLayout,因此完全支持LinearLayout所支持的属性
TableLayout布局常用属性

属性名称功能描述例子
android:stretchColumns设置可被拉伸的列="0"表示第1列可被拉伸
android:shrinkColumns设置可被收缩的列="1,2"表示2,3列可被收缩
android:collapseColumns设置可被隐藏的列="0"表示第1列可被隐藏

TableLayout布局中控件常用属性

属性名称功能描述例子
android:layout_column设置该控件显示的位置="1"表示在第二个位置显示
android:layout_apan设置该控件占据几行,默认为1行

###2.3.5 frameLayout帧布局
frameLayout用于在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧。后加入的控件会叠加在上一个控件上层。默认情况下,帧布局中的所有控件会与左上角对齐。
XML布局文件中定义frameLayout基本语法格式:



frameLayout属性

属性名称功能描述
android:foreground设置帧布局容器的前景图像(始终在所有子控件之上)
android:foregroundGravity设置前景图像显示的位置
2.3.6 ConstraintLayout约束布局

ConstraintLayout是Android Studio2.2新添加的布局。ConstrainLayout并不太适合使用XML代码的方式编写布局,但非常适合使用可视化的方式编写界面布局

  1. 相对定位
    一个空间相对于另一个空间进行定位。ConstrainLayout布局中的控件可以在横向和纵向上以添加约束关系的方式进行相对定位。

    • 横向:left、start、right、end
    • 纵向:top、bottom、baseline(文本底部基准线)

    相对定位关系的属性

    属性名称功能描述
    layout_constraintLeft_toLeftOf控件左边与另一个控件的左边对齐
    layout_constraintLeft_toRightOf控件左边与另一个控件的右边对齐
    layout_constraintRight_toLeftOf控件右边与另一个控件的左边对齐
    layout_constraintRight_toRightOf控件右边与另一个控件的右边对齐
    layout_constraintTop_toTopOf控件上边与另一个控件的上边对齐
    layout_constraintTop_toBottomOf控件上边与另一个控件的底部对齐
    layout_constraintbaseline_tobaselineOf控件间的文本内容基准线对齐
    layout_constraintStart_toEndOf控件的起始边与另外一个控件的尾部对齐
    layout_constraintStart_toStartOf控件的起始边与另外一个控件的起始边对齐
    layout_constraintEnd_toStartOf控件的尾部与另外一个控件的起始边对齐
    layout_constraintEnd_toEndOf控件的尾部与另外一个控件的尾部对齐
  2. 居中定位和倾向
    控件可以通过添加约束的方式确定该控件在父布局中的相对位置。当相同方向上,控件两边同时向ConstraintLayout添加约束,则控件在添加约束的方向上居中显示
    两个约束的力大小不等时,就会产生倾向
    倾向的属性

    属性名称功能描述
    layout_constraintHorizontal_bias横向的倾向
    layout_constraintVertical_bias纵向的倾向

    如果ConstraintLayout布局中的控件在居中方向上和父布局的尺寸一致,此时该方向的居中约束和倾向没有意义。

  3. Chain
    Chain是一种特殊的约束。它使我们能够对一组水平或垂直方向上互相关联的控件进行统一管理。一组控件通过一个双向的约束关系链接起来,就能形成一个Chain
    Chain中第一个控件成为头控件,头控件可以通过layout_constraintHorizontal_chainStyle和 layout_constraintVertical_chainStyle属性设置水平链条和竖直链条的样式

    1. spread:设置控件在布局内均匀分布。
    2. spread_insid:设置两端的控件与父布局无间距显示,其他的控件将在剩余的空间内采用spread样式进行布局
    3. packed:设置Chain中的所有控件合并在一起后在布局内居中显示。

    当控件宽或高设置为0dp时,Chain的3种样式可以配合layout_constraintHorizontalweight形成Weighted Chain的样式。
    packed可以搭配layoutconstraintHorizontal_bias控制Chain与父容器的间距从而形成packed Chain With Bias样式。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/340655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号