TableLayout表格布局和AbsoluteLayout绝对
TableLayout表格布局和AbsoluteLayout绝对布局用的相对较少,尤其AbsoluteLayout绝对布局,由于灵活性差难以维护已被废弃,有兴趣的读者了解一下即可。
TableLayout表格布局
TableLayout类似HTML的table元素,可以定义行来实现表格布局效果。TableLayout中使用标签<tableRow></tableRow>
来区分行,如果没有tableRow,每个组件都会产生一行
以下代码简单演示了TableLayout的使用:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1,1"
android:textSize="18sp"
android:textColor="@color/black"
android:paddingVertical="10dp"
android:paddingHorizontal="20dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1,2"
android:textSize="18sp"
android:textColor="@color/black"
android:paddingVertical="10dp"
android:paddingHorizontal="20dp"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2,1"
android:textSize="18sp"
android:textColor="@color/black"
android:paddingVertical="10dp"
android:paddingHorizontal="20dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2,2"
android:textSize="18sp"
android:textColor="@color/black"
android:paddingVertical="10dp"
android:paddingHorizontal="20dp"/>
</TableRow>
</TableLayout>
效果预览图:
TableLayout上面示例实现了一个2*2的表格,两个tableRow代表两行,每个tableRow有两个TextView,表示两列。
常用属性:表格布局有以下三个常用属性,用于控制列的显示与变化。
-
android:collapseColumns
: 设置需要被隐藏的列的序号 -
android:shrinkColumns
: 设置允许被收缩的列的序号 -
android:stretchColumns
: 设置允许被拉伸的列的序号
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:collapseColumns="0"
android:stretchColumns="2"><!--隐藏第一列,拉伸第三列-->
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1,1"
android:textSize="18sp"
android:textColor="@color/black"
android:paddingVertical="10dp"
android:paddingHorizontal="20dp"
android:background="@color/teal_200"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1,2"
android:textSize="18sp"
android:textColor="@color/black"
android:paddingVertical="10dp"
android:paddingHorizontal="20dp"
android:background="@color/purple_200"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1,3"
android:textSize="18sp"
android:textColor="@color/black"
android:paddingVertical="10dp"
android:paddingHorizontal="20dp"
android:background="@color/teal_200"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1,4"
android:textSize="18sp"
android:textColor="@color/black"
android:paddingVertical="10dp"
android:paddingHorizontal="20dp"
android:background="@color/purple_200"/>
</TableRow>
</TableLayout>
效果预览图:
表格布局属性上面的示例展示了隐藏和拉伸的列,设置收缩的列需要有足够宽的组件,当一行显示不满不会产生收缩;设置拉伸的列会填充满余下的屏幕,如果还有可显示的屏幕的话。
如果需要控制多个列,属性值后添加列的序号即可,使用英文逗号分隔每个列。
AbsoluteLayout绝对布局
AbsoluteLayout绝对布局直接通过坐标x,y
来控制组件位置,常用属性如下:
-
android:layout_width
: 组件宽度 -
android:layout_height
: 组件高度 -
android:layout_x
: 设置组件的X坐标 -
android:layout_y
: 设置组件的Y坐标
以上属性单位都是dp,用上面的属性写个示例看看
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 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="30dp"
android:text="第一行"
android:textColor="@color/black"
android:textSize="20sp"
android:layout_x="40dp"/>
<TextView
android:layout_width="200dp"
android:layout_height="30dp"
android:text="第二行"
android:textColor="@color/black"
android:textSize="20sp"
android:layout_y="40dp"/>
</AbsoluteLayout>
效果预览图:
AbsoluteLayout如果不指定子组件的坐标,子组件就会堆在左上角,因为AbsoluteLayout已经被废弃,所以建议使用其它布局代替。