上次给你们介绍了 LinearLayout 线性布局,这次给大家介绍:
表格布局(几乎不用)
帧布局
绝对布局
相对布局 RelativeLayout
1:帧布局(就好象一张张卡片堆叠上去,后面会盖出前面的)
FrameLayout
注:帧布局有点类似于awt的CardLayout都是把组件一个一个叠加到一起,
但CardLayout能将下面的组件移上来,但FrameLayout没有提供此功能
ImageView
src
scaleType="fitXY" XY方向拉伸
android:scaleType="fitXY"
android:src="@drawable/img18"
**2: 表格布局**
android:rowCount="7"
android:columnCount="4"
这是最开始要设定表格布局的行和列
下面我们用一个表格布局做一个计算器的样式
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="fill_horizontal"
android:rowCount="7"
android:columnCount="4"
android:background="@color/black"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:layout_columnSpan="4"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:textSize="40dp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_1"
android:text="1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_2"
android:text="2"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_3"
android:text="3"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_div"
android:text="/"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_4"
android:text="4"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_5"
android:text="5"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_6"
android:text="6"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_chen"
android:text="*"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_7"
android:text="7"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_8"
android:text="8"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_9"
android:text="9"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_del"
android:text="-"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnSpan="2"
android:layout_gravity="fill_horizontal" //设置这个button的位置是水平填充
android:id="@+id/btn_activity_0" //给这个控件取名字
android:text="0" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_activity_dian"
android:text="."
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_rowSpan="2"
android:layout_gravity="fill_vertical"
android:id="@+id/btn_activity_add"
android:text="+" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnSpan="3"
android:layout_gravity="fill_horizontal"
android:id="@+id/btn_activity_sum"
android:onClick="sumNumber"
android:text="=" />
<Space />
</GridLayout>
效果如下:
小细节:
android:gravity和android:layout_gravity的区别
1.1 android:gravity:控件内部的元素(对内有效)
android:layout_gravity:控件所在父元素的位置(对外生效)
1.2 特殊情况
父元素的android:orientation=“vertical”,layout_gravity 水平设置的相关属性有效
父元素的android:orientation=“horizontal”,layout_gravity 垂直设置的相关属性有效