Android布局详解

Android布局详解Android六大基本布局分别是:线性布局LinearLayout、相对布局RelativeLayout、帧布局FrameLayout、表格布局TableLayout、网格布局GridLayout。其中,表格布局是线性布局的子类。网格布局是android4.0后新增的布局。普通视图还是布局都继承自View,其中ViewGroup就是所有布局的父类,ViewGroup继承自View…

大家好,又见面了,我是你们的朋友全栈君。

Android基本布局分别是:线性布局LinearLayout相对布局RelativeLayout帧布局FrameLayout表格布局TableLayout网格布局GridLayout。

其中,表格布局是线性布局的子类。网格布局是android 4.0后新增的布局。

普通视图还是布局都继承自 View ,其中 ViewGroup 就是所有布局的父类, ViewGroup 继承自 View 同时可以对 View 进行管理 ( 编排,控制 View 显示位置和大小 )主要掌握以下三种布局

LinearLayout(常用的布局)
线性布局,可以水平编排或者垂直编排孩子的显示
android:orientation=”vertical”  设置方向 vertical 垂直 ( 沿着 y 坐标 ) horizontal 水平方向(沿着 x 坐标)
线性布局中可以使用 android:layout_weight 属性设置权重,可以将 LinearLayout 中剩下的部分进行比例划分
LinearLayout 中如果需要使用占位视图可以使用 Space
<Space
android:layout_width=”1dp”
android:layout_height=”0dp”
android:layout_weight=”1″ />

LinearLayout 中使用 android:gravity 可以调整孩子的对齐方式,但是要注意方向,垂直的 ( 如果高不定 ) ,可以调整孩子在 left\centerhorizontal\right  如果是水平 ( 宽如果不定 )  可以调整孩子在 top\centervertical\bottom

RelativeLayout
相对布局
第一种:子视图相对于父容器,取值为 true/false
android:layout_alignParentLeft=”true” 靠父容器左侧
android:layout_alignParentRight=”true”  靠父容器右侧
android:layout_alignParentTop=”true” 靠父容器顶部
android:layout_alignParentBottom=”true”  靠父容器底部
android:layout_centerVertical=”true” 垂直居中
android:layout_centerInParent=”true” 居中
android:layout_centerHorizontal=”true” 水平居中
第二种:子视图之间相互参考,值对方视图的 id –> @id/xxx
id 的声明: @+id/id 名称 如: @+id/tv_a
id 的引用: @id/id 名称 如: @id/tv_a
android:layout_toLeftOf 在谁的左侧
android:layout_toRightOf 在谁的右侧
android:layout_above 在谁的上面
android:layout_below 在谁的下面
android:layout_alignTop 顶部对齐
android:layout_alignLeft 左侧对齐
android:layout_alignRight 右侧对齐

android:layout_alignBottom 底部对齐


FrameLayout
帧布局 ( 框架布局 ) ,布局特性是所有孩子默认叠在该容器左上角
<FrameLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent” >
<TextView
android:layout_width=”200dp”
android:layout_height=”50dp”
android:background=”#55ff0000″ />
<TextView
android:layout_width=”150dp”
android:layout_height=”100dp”
android:background=”#5500ff00″ />
<TextView
android:layout_width=”100dp”
android:layout_height=”150dp”
android:background=”#550000ff” />
</FrameLayout>
其中孩子中可以使用 android:layout_gravity 来调整自己在父容器中的位置 ( 主动权在孩子身上 ) ,跟 android:gravity 不一样的是 android:gravity 主动权在父元素身上
<FrameLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent” >
<TextView
android:layout_width=”200dp”
android:layout_height=”50dp”
android:background=”#55ff0000″
android:text=”ABC”
android:layout_gravity=”center” /> 设置该视图显示在 FrameLayout 正中间

<TextView
android:layout_width=”150dp”
android:layout_height=”100dp”
android:background=”#5500ff00″
android:layout_gravity=”right|bottom” />  显示在右下角

</FrameLayout>

TableLayout

表格布局继承自LinearLayout,通过TableRow设置行,列数由TableRow中的子控件决定,

直接在TableLayout中添加子控件会占据整个一行。

TableLayout常用属性:

android:shrinkColumns:设置可收缩的列,内容过多就收缩显示到第二行

android:stretchColumns:设置可伸展的列,将空白区域填充满整个列

android:collapseColumns:设置要隐藏的列

列的索引从0开始,shrinkColumns和stretchColumns可以同时设置。

子控件常用属性:

android:layout_column:第几列

android:layout_span:占据列数

GridLayout(网格布局)

作为android 4.0 后新增的一个布局,与前面介绍过的TableLayout(表格布局)其实有点大同小异;

不过新增了一些东西

1、跟LinearLayout(线性布局)一样,他可以设置容器中组件的对齐方式

2、容器中的组件可以跨多行也可以跨多列(相比TableLayout直接放组件,占一行相比较)

常用属性:

排列对齐:

①设置组件的排列方式:   android:orientation=””     vertical(竖直,默认)或者horizontal(水平)

②设置组件的对齐方式:   android:layout_gravity=””   center,left,right,buttom

设置布局为几行几列:

①设置有多少行: android:rowCount=”4″        //设置网格布局有4行

②设置有多少列: android:columnCount=”4″    //设置网格布局有4列

设置某个组件位于几行几列

注:都是从0开始算的哦!

①组件在第几行: android:layout_row = “1”   //设置组件位于第二行 

②组件在第几列: android:layout_column = “2”   //设置该组件位于第三列

设置某个组件横跨几行几列:

①横跨几行: android:layout_rowSpan = “2”     //纵向横跨2行

②横跨几列: android:layout_columnSpan = “3”     //横向横跨2列

最后说一点:

GridLayout是android 4.0 后才推出的,API Level 为 14

如果读者将布局设置为GridLayout时,会出现 莫名其妙的报错,

只需要将配置文件中的 MinSDK改成14或者以上版本 即可,保存


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136976.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月2日 下午7:46
下一篇 2022年6月2日 下午7:46


相关推荐

  • 面试 设计题_设计模式面试题及答案

    面试 设计题_设计模式面试题及答案文章目录设计模式什么是设计模式为什么要学习设计模式设计模式分类设计模式的六大原则开放封闭原则(OpenClosePrinciple)里氏代换原则(LiskovSubstitutionPrinciple)依赖倒转原则(DependenceInversionPrinciple)接口隔离原则(InterfaceSegregationPrinciple)迪米特法则(最少知道原则)(Deme…

    2025年11月7日
    6
  • c++ 常量表达式_c语言所有函数

    c++ 常量表达式_c语言所有函数constexpr修饰函数。普通函数/类成员函数。1.函数必须要有返回值,并且return返回的表达式必须是常量表达式。错误代码如下:#include<iostream>usingnamespacestd;//error不是常量表达式函数constexprvoidfunc1(){ inta=200; cout<<a<<endl;}//error不是常量表达式函数因为a是变量,不是常量constexprint

    2026年4月16日
    4
  • svn汉化包为什么装不上(3dm汉化补丁怎么安装)

    问题描述:我安装了svn,也下载了LanguagePack,但是svn却没有中文选项。问题分析:没有下载相对应的汉化版本包,我的svn版本是1.10,而下载的汉化包却是1.12.解决办法:下载路径:https://osdn.net/projects/tortoisesvn/storage/路径里面有比较全面的汉化包。最后成功解决:…

    2022年4月14日
    41
  • AI智能体|文本格式错乱?扣子(Coze)一键秒出Word、Excel、PPT神器来助你

    AI智能体|文本格式错乱?扣子(Coze)一键秒出Word、Excel、PPT神器来助你

    2026年3月12日
    7
  • SPSS步骤|卡方检验详细操作和结果分析「建议收藏」

    SPSS步骤|卡方检验详细操作和结果分析「建议收藏」​卡方检验是很常用的一种分析方法,什么情况下使用卡方检验?如果你手上的数据是一种定类数据,比如性别(男、女)是否患病(是、否)。你还想要分析定类数据和定类数据之间的差异关系。例如想要分析性别和是否抽烟之间的关系。这一句话里面包含两个词语,分别是:性别,是否抽烟。性别为X,是否抽烟为Y。性别为定类数据,是否抽烟也是定类数据,此时就可以使用卡方检验。这篇文章分享分别使用两种常见统计分析工具SPSS和SPSSAU完成卡方检验。SPSS是目前常用的统计软件,SPSSAU是更简单的在线数据科学分析工具

    2022年5月17日
    124
  • 用一份JAVA工程师的求职简历来说说求职简历怎么写[通俗易懂]

    用一份JAVA工程师的求职简历来说说求职简历怎么写[通俗易懂]这是一篇我比较想看到的简历指导的文章。但是我比较反对简历造假。我觉得会什么写什么把。Java就业指导  想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内容写到你的简历中,当然更需要的是你在面试的时候向面试官展示这些专业技能。相信此文…

    2026年2月20日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号