Android六大布局

LinearLayout(线性布局)

线性布局是程序中最常见的布局方式之一,线性布局可以分为水平线性布局和垂直线性布局两种,分别是通过android:orientation=“horizontal” 和 android:orientation="vertical"来控制的

常用属性

android:layout_gravity="center" <!--是本元素相对于父元素的对齐方式-->
android:gravity="bottom|right" <!--是本元素所有子元素的对齐方式,设置在父元素上,多个值用|隔开-->
android:padding="10dp" <!--是本元素所有子元素的与父元素边缘的距离,设置在父元素上-->
android:layout_marginLeft="10dp" <!--子元素与父元素边缘的距离,设置在子元素上-->
android:orientation <!--线性布局以列或行来显示内部子元素-->
android:layout_weight ="1" <!--分配分配权重值-->
当android:orientation="vertical" 时,只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。
当android:orientation="horizontal" 时,只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。

FrameLayout(帧布局)

FrameLayout(帧布局)可以说是五大布局中最为简单的一个布局,这个布局会默认把控件放在屏幕上的左上角的区域,后续添加的控件会覆盖前一个,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个控件。

常用属性

android:layout_gravity <!--控件重力-->
android:foreground <!--前景-->
android:foregroundGravity <!--前景重力-->

RelativeLayout(相对布局)

相对布局(RelativeLayout)是一种根据父容器或者兄弟控件作为参照来确定控件位置的布局方式

常用属性

相对布局原文链接:https://www.runoob.com/w3cnote/android-tutorial-relativelayout.html
在这里插入图片描述

AbsoluteLayout(绝对布局)

直接就可以决定子组件的绝对位置,简单直接就可以定位,但是手机的屏幕不一样大,适配性差;
可以直接用Android:layout_x和android:layout_y来定义组件的位置(两个属性只能在绝对布局中使用,在相对布局中都不会显示的)

常用属性

// 值必须为具体的像素值
android:layout_marginBottom	距离某元素底边缘
android:layout_marginLeft	距离某元素左边缘
android:layout_marginRight	距离某元素右边缘
android:layout_marginTop	距离某元素上边缘
// 值必须为true或false
android:layout_centerHrizontal	水平居中
android:layout_centerVertical	垂直居中
android:layout_centerInparent	相对于父元素完全居中
android:layout_alignParentBottom	贴紧父元素的下边缘
android:layout_alignParentLeft	贴紧父元素的左边缘
android:layout_alignParentRight	贴紧父元素的右边缘
android:layout_alignParentTop	贴紧父元素的上边缘
android:layout_alignWithParentIfMissing	如果对应的兄弟元素找不到的话就以父元素做参照物
// 值必须为ID
android:layout_below	在某元素的下方
android:layout_above	在某元素的的上方
android:layout_toLeftOf	在某元素的左边
android:layout_toRightOf	在某元素的右边
android:layout_alignTop	本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft	本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom	本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight	本元素的右边缘和某元素的的右边缘对齐

TableLayout(表格布局)

// 特点
Shrinkable : 该列的宽度可以进行收缩,以使表格能够适应父容器的大小
Stretchable : 该列可以进行拉伸,以填满表格中空闲的空间
Collapsed : 该列将会被隐藏

常用属性

stretchColumns	为设置运行被拉伸的列的序号,如android:stretchColumns="2,3"表示在第三列的第四状语从句:列的一起填补空白,如果要所有列一起填补空白,用则“*”符号,列号都是从0开始算的。
shrinkColumns	为设置被收缩的列的序号,收缩是用于在一行中列太多或者某列的内容文本过长,会导致某列的内容会被挤出屏幕,这个属性是可以帮助某列的内容进行收缩,用于防止被挤出的。
android:collapseColumns	为设置需要被隐藏的列的序号,使用该属性可以隐藏某列。
android:layout_column	为该子类控件显示在第几列。android:layout_column="2"表示跳过第二个,直接显示在第三个单元格内。
android:layout_span	为该子类控件占据第几列。android:layout_span="3"表示合并3个单元格,就是这个组件将占据3个单元格。
collapseColumns	隐藏列

GridLayout(网格布局)

// 特点
android:layout_row : 固定显示在第几行。
android:layout_column : 固定显示在第几列,前面几列没控件的话就空着。
android:layout_rowSpan : 跨几行
android:layout_columnSpan: 跨几列

常用属性

android:orientation	用于设置vertical竖直或horizontal水平。
android:layout_gravity	为设置对齐方式,可以设置center,right,left等。
android:rowCount	为可以设置行数,要多少行设置多少行,如android:rowCount="2"为设置网格布局有2行。
android:columnCount	为可以设置列数,要多少列设置多少列,如android:columnCount="2"为设置网格布局有2列。
android:layout_row	为设置组件位于第几行,从0开始计数的,如android:layout_row="1"为设置组件在第2行。
android:layout_column	为设置组件位于第几列,从0开始计数的,如android:layout_column="1"为设置组件在第2列。
android:layout_rowSpan	为设置组件横跨几行,如android:layout_rowSpan="2"为纵向横跨2行。
android:layout_columnSpan	为设置组件横跨几列,如android:layout_columnSpan="2"为橫向横跨2列。

TableLayout 和 GridLayout的区别

// TableLayout:
不能同时向水平和垂直方向做控件的对齐,因为TableLayout继承了LinearLayout,因此只能向一个方向做控件的对齐
不能跨行跨列,因为TableLayout,不明确指定包含多少行,多少列,而是通过向TableRow里面添加其他组件,每添加一个组件该表格就增加一列
运用TableLayout只能通过添加TableRow或者组件来增加行和列。当直接添加组件的时候,组件独自占用一行。当添加TableRow时,该布局增加了一行,并且在TableRow里每添加一个组件,便增加一列
TableLayout无法做出跨行跨列的效果,每行每列都是挨着的,就算是单元格设置Collapsed属性,如果后面有组件,也会填充上来。

// GridLayout
Android4.0之后新加的布局管理器
能够把整个容器划分为rows*columns的网格,每个网格可以放置一个组件
可以设置一个组件横跨多少列或者纵跨多少行
当单元格大小大于组件大小时,可以通过设置layout_grativity属性值,设置组件在单元格里的位置
通过设置layout_columnWeight/layout_rowWeight属性值,可以设置各个组件的大小比例

gravity和layout_gravity的区别

相同处:两者都是设置对齐方式的属性。内部的属性值相同
不同处
gravity是设置自身子元素的对齐方式。比如一个TextView,则是设置内部文字的对齐方式。如果是ViewGroup组件如LinearLayout的话,则为设置它内部view组件的对齐方式。
layout_gravity是设置本元素自身相当于父元素的对齐方式。比如,一个TextView设置layout_gravity属性,则表示这TextView相对于父容器的对齐方式。

为什么 XML 资源文件要从文本格式编译成二进制格式

// 主要基于以下 两点原因:

  1. 空间占用更小:因为所有 XML 元素的标签、属性名称、属性值和内容所涉及到的字符串都会被统一收集到一个字符串资源池中,并且会去重。有了这个字符串资源池,原来使用字符串的地方就会被替换成一个索引到字符串资源池的整数值,从而可以减少文件的大小。
  2. 解析效率更高:二进制格式的 XML 文件解析速度更快。这是由于二进制格式的 XML 元素里面不再包含有字符串值,因此就避免了进行字符串解析,从而提高了解析效率。

Android 资源管理框架又是如何快速定位到最匹配资源的

// 主要基于两个文件:

  1. 资源 ID 文件 R.java:赋予每一个非 assets 资源一个 ID 值,这些 ID 值以常量的形式定义在 R.java 文件中。
  2. 资源索引表 resources.arsc:用来描述那些具有 ID 值的资源的配置信息。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Android 六宫格布局是指将界面分为六个等大小的方格,每个方格中可以放置不同的控件或者视图。这布局方式在Android应用的界面设计中经常使用,可以使界面看起来整齐、美观,并且提供了较高的灵活性。 实现六宫格布局的方法有很多,其中比较简单的方式是使用GridLayout布局管理器。GridLayout可以将子视图按照行和列的方式进行排列,因此非常适合用于六宫格的界面设计。 在XML布局文件中,我们可以通过设置GridLayout的属性来实现六宫格布局。首先,我们需要将GridLayout设置为6行1列,表示界面将被分为六个水平方向的等高行;然后,我们可以在每个格子中添加其他的控件或者视图。通过设置每个格子的权重、行列位置等属性,可以实现不同的布局效果,例如让某些格子占据更多的空间或者选择合适的控件来填充格子。 另外,我们还可以通过Java代码来实现六宫格布局。可以使用GridLayoutManager或者自定义布局管理器继承自RecyclerView.LayoutManager来实现。这方式可以更加灵活地控制子视图的排列方式,可以根据自己的需求定制不同的布局效果。 总之,Android六宫格布局是一常见且实用的界面布局方式,可以通过使用GridLayout或者自定义布局管理器来实现。这布局方式可以使界面整齐、美观,并且提供了较高的灵活性,适合用于不同类型的Android应用界面设计。 ### 回答2: 安卓的六宫格布局是一常见的应用界面布局方式,它将屏幕分割为2行3列的六个等大的格子,每个格子可以放置不同的应用模块或者功能模块。 此布局通常用于主屏幕或者应用程序的菜单界面,以提供快速访问和导航。每个格子可以自定义放置不同的应用图标、小部件或者快捷方式,以满足用户的个性化需求。 六宫格布局的优势在于简单直观,用户可以一目了然地找到和使用所需的应用或者功能。同时,由于每个格子的尺寸相同,不同的应用图标或者模块之间的界面一致性很高,提升了用户界面的美观度和易用性。 此外,六宫格布局还可以根据用户的喜好进行调整和定制。用户可以自由地拖动和排列格子的位置,以适应个人喜好和使用习惯。这灵活性使得用户可以根据自己的需求将常用的应用设置为更加方便的位置,提高了操作效率。 总的来说,安卓的六宫格布局提供了一简单直观且易于个性化的界面布局方式,使得用户可以快速访问和导航不同的应用或者功能模块。它为用户提供了良好的用户体验和操作效率,受到广大安卓用户的喜爱。 ### 回答3: 六宫格布局是一常见的Android布局方式,适用于需要将界面划分为6个等宽、等高的方格的情况。 在Android中,可以通过使用GridLayout布局管理器来实现六宫格布局。首先,在XML布局文件中定义一个GridLayout容器,并设置相关属性,如行数、列数、间距等。然后,在GridLayout中添加6个子视图,即代表六个方格的控件。 可以将六宫格布局分为两步骤:定义和设置属性与添加子视图。 在定义和设置属性方面,可以通过设置GridLayout的属性来实现六宫格布局的效果。比如,设置行数和列数为2,即可将布局分为2行3列的六个方格。可以使用layout_rowSpan和layout_columnSpan属性来设置某个子视图占据多个行或列的大小。也可以使用layout_gravity属性调整子视图在方格中的位置。 在添加子视图方面,可以使用GridLayout的addView方法来将子视图添加到布局中。可以使用LayoutInflater来实例化子视图,并为子视图设置相关属性。可以通过设置子视图的宽度和高度为0dp,以实现平均分配布局。 总结起来,通过使用GridLayout布局管理器,可实现六宫格布局,将界面划分为6个等宽、等高的方格。根据需要,可以通过设置各个子视图的属性和位置,来实现不同的布局效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是阿超

现在二师兄的肉比师父的都贵了.

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值