第5讲TableLayout布局与适配器TableLayout 表格布局
类似HTML中的Table,以行列的方式来布局组件,但是没有边框。
它是由多个TableRow对象组成,每个TableRow是一个容器,可以有0个或多个单元格,每向TableRow添加一个组件,就增加一列。
表格布局中,列的宽度由该列中最宽的那个单元格决定
这些TableRow,不能设置layout_width和ayout_hight(设置了也没有用),宽度默认是wrap_content,根据具体的包裹内容来决定显示大小,但是每个单元格中的内容可以设置高度和宽度。
android:collapseColumns="2" 设置被隐藏的列是第?列(从0开始数)
android:shrinkColumns="2" 设置被收缩的是第?列
android:stretchColumns="1" 设置被拉伸的是第?列
举例:见教材P56注册界面
部分常用组件用法补充:
(1)ToggleButton (开关按钮)
是一个具有选中和未选择状态双状态的按钮,并且需要为不同的状态设置不同的显示文本。
默认情况下是未选中textOff,需要在前面加上一个文本标签TextView来说明显示的内容。
<ToggleButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textOff="未婚" //未选中时显示的内容
android:textOn="已婚"/> //选中时显示的内容
事件处理方式:
tb.setOnClickListener(new OnClickListener()
tb = (ToggleButton) this.findViewById(R.id.tg_marry);
tb.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
if(tb.isChecked()) //开关按钮选中
Toast.makeText(MainActivity.this, "已婚", Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivity.this, "未婚", Toast.LENGTH_SHORT).show();
}});
课后作业:
利用开关按钮来控制ImageView中显示的图片变换
(2)Spinner(列表控件)
这个控件主要就是一个列表选择框,不同于web的下拉列表,是弹出一个列表菜单供用户选择。
Spinner是View类的一个子类,位于android.widget包下,每次只显示用户选中的元素,当用户再次点击时,会弹出选择列表供用户选择。
Spinner的实现方法有两种:
一种是需要一个已有的文字列表来描述其列表的各个选项。
(这个列表可能直接以数组资源的形式来给出,如下面的方法1,也可能是从string.xml中获得若干个文字信息,再形成数组,如下面的方法2)
另外一种是:希望列表中的显示内容是自定义的样式,比如是图片+文字的样式,此时采用的自定义的适配器累来继承BaseAdapter适配器,如下面的方法3。
方法一:使用xml定义的数组资源作为数据源,直接在res/values中直接定义一个数组,再
方法二:使用一个代码中拼凑所获得的数组作为数据源,在布局文件中仅仅声明一个Spinner,并不指定其选项,而在代码中将选项以ArrayAdapter适配器的形式赋给Spinner。
ArrayAdapter是已经定义好的适配器类,它继承自BaseAdapter,可以查看源码,它将传入的数组参数中的文字,放入TextView中,将这个TextView显示到列表中的每一项,因此,采用这个方法,列表上只能显示文字,若要列表选项上的内容是复合内容(或者是自定义的样式),比如图片加文字,我们可以自己写自己的适配器,如方法三。
Spinner的事件处理。