前面文章有讲过Android布局中常用的线性布局和相对布局,这里学习另外三种不常用布局帧布局、表格布局、网格布局
帧布局
如上图类似这种布局就是帧布局,后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡
常用属性
android:layout_gravity="center"//控件重力
android:gravity="center"//控件内容相对于控件本身的位置
android:foreground="@mipmap/bg"//前景
android:foregroundGravity="center_vetical"//前景重力
案例代码
<TextView
android:layout_width="350dp"
android:layout_height="350dp"
android:background="#ff0000"
android:layout_gravity="center"/>
<TextView
android:layout_width="200dp"
android:layout_height="200dp"
android:background="#00ff00"
android:layout_gravity="center"
/>
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#0000ff"
android:layout_gravity="center"
android:text="测试内容"
android:textColor="#ffffff"
android:gravity="center"
/>
效果
表格布局
通过行列的形式展示我们的控件,这样的布局就是表格布局
常见属性
android:stretchColumns="*"//设置可伸展的列,传入的是整型数据,即列的索引,*代表所有,也可多个比如1,2
android:shrinkColumns="1"//可伸缩的列
android:collapseColumns="2,3"//隐藏的列
案例代码
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="*"
>
<!--
1.直接在Tablelayout中添加控件,默认控件和父容器等宽,要让一些控件出现在同一行,把这些控件放在TableRow
里面,宽度默认是内容宽度
-->
<EditText/>
<TableRow>
<Button android:text="7" />
<Button android:text="8" />
<Button android:text="9" />
<Button android:text="/" />
</TableRow>
<TableRow>
<Button android:text="4" />
<Button android:text="5" />
<Button android:text="6" />
<Button android:text="-" />
</TableRow>
<TableRow>
<Button android:text="1" />
<Button android:text="2" />
<Button android:text="3" />
<Button android:text="+" />
</TableRow>
<TableRow>
<Button android:text="." />
<Button android:text="0" />
<Button android:text="=" />
<Button android:text="*" />
</TableRow>
</TableLayout>
网格布局
如上图,网格布局和表格布局类似,但是网格能自身确定整个布局应该出现多少行多少列。控件放入的时候从左到右摆满指定的列数,再从第二行开始摆放
常用属性
android:orientation="horizontal"//表示控件在网格中从左到右顺序摆放还是上到下的顺序摆放
android:rowCount="4"//行数
android:columnCount="3"//列数
android:layout_rowSpan="2"//跨2行
android:layout_columnSpan="2"//跨2列
android:layout_gravity="fill"//填充展示
案例
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:rowCount="4"
android:columnCount="3"
>
<Button android:text="1"/>
<Button android:text="2"/>
<Button android:text="3"/>
<Button android:text="4"
android:layout_rowSpan="2"
android:layout_columnSpan="2"
android:layout_gravity="fill"/>
<Button android:text="5"/>
<Button android:text="6"/>
<Button android:text="7"/>
<Button android:text="8"/>
<Button android:text="9"/>
</GridLayout>