2018-2019-2 20189205《移动平台应用开发实践》第七周作业

Android学习

布局

Android界面六大基本布局分别是:

  • 线性布局LinearLayout
  • 表格布局TableLayout
  • 相对布局RelativeLayout
  • 层布局FrameLayout
  • 绝对布局AbsoluteLayout
  • 网格布局GridLayout。
    其中,表格布局是线性布局的子类。网格布局是android 4.0后新增的布局。在手机程序设计中,绝对布局基本上不用,用得相对较多的是线性布局和相对布局。

线性布局

线性布局中,将布局中的组件线性排列,有两种排法:

  • 从左到右:android:orientation=”horizontal”
  • 从上到下:android:orientation=”vertical”

常用的属性有:

  • android:id - 为控件指定相应的ID
  • android:text - 指定控件当中显示的文字,需要注意的是,这里尽量使用string.xml
  • android:gravity - 指定控件的基本位置,比如说居中,居右等位置
  • android:textSize - 指定控件当中字体的大小
  • android:background - 指定控件所用的背景色,RGB命名法
  • android:layout_width - 指定控件的宽度
  • android:layout_height - 指定控件的高度
  • android:layout_weight - 指定控件的占用比例
  • android:padding - 指定控件的内边距,也就是说控件当中的内容
  • android:sigleLine - 如果设置为真的话,则将控件的内容显示在一行当中

相对布局

相对布局中,组件的位置参考其他控件进行布局,默认为父控件。
相对布局有三种类型的属性:

**属性值是true或false **

  • android:layout_centerHrizontal 水平居中
  • android:layout_centerVertical 垂直居中
  • android:layout_centerInparent 相对于父元素完全居中。
  • android:layout_alignParentBottom 位于父元素的下边缘
  • android:layout_alignParentTop 位于父元素的上边缘
  • android:layout_alignParentLeft 位于父元素的左边缘
  • android:layout_alignParentRight 位于父元素的右边缘

属性值是”@id/*“

  • android:layout_below 在某元素的下方
  • android:layout_above 在某元素的上方
  • andorid:layout_toRightOf 在某元素的右方
  • android:layout_toLeftOf 在某元素的左方
  • android:layout_alignBottom 和某元素下方对齐
  • android:layout_alignTop 和某元素上方对齐
  • android:layout_alignRight 和某元素右方对齐
  • android:layout_alignLeft 和某元素左方对齐

属性值是数值

  • android:layout_marginLeft 离某元素左边缘的距离
  • android:layout_marginRight 离某元素右边缘的距离
  • android:layout_marginTop 离某元素上边缘的距离
  • android:layout_marginBottom 离某元素下边缘的距离

层布局

层布局的特点是从左上角开始,后面的会覆盖前面的控件。
在普通功能的软件设计中层布局用得也不多,其主要应用就是地图方面。

表格布局

表格布局,适用于多行多列的布局格式,每个TableLayout是由多个TableRow组成,一个TableRow就表示TableLayout中的每一行,这一行可以由多个子元素组成。实际上TableLayout和TableRow都是LineLayout线性布局的子类。但是TableRow的参数android:orientation属性值固定为horizontal,且android:layout_width=MATCH_PARENT,android:layout_height=WRAP_CONTENT。所以TableRow实际是一个横向的线性布局,且所以子元素宽度和高度一致。
在TableLayout中,单元格可以为空,但是不能跨列,意思是只能不能有相邻的单元格为空。

常用属性:

  • android:shrinkColumns:设置可收缩的列,内容过多就收缩显示到第二行
  • android:stretchColumns:设置可伸展的列,将空白区域填充满整个列
  • android:collapseColumns:设置要隐藏的列

网格布局

GridLayout网格布局是Android4.0之后新加入的布局方式,与表格布局大同小异,不过也新增了一些内容:

  • 1.可以设置容器中组件的对其方式。
  • 2.容器中的组件可以跨多行也可以跨多列

监听器

监听器是一个存在于View类下的接口,一般以On**Llistener命名,实现该接口需要复写相应的on(View v)方法。

实现

方法一:
在Activity中定义一个内部类继承监听器接口(这里是OnClickListener)。常见的继承方法如下:

class MyListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();
        }
    }

方法二:
实现匿名内部类。这种方法适合只希望对监听器进行一次性使用的情况,在该代码块运行完毕之后,该监听器也就不复存在了。

bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"you have clicked Button1",Toast.LENGTH_SHORT).show();
            }
        });

方法三:
利用布局文件中的onClick属性,并在实现文件中实现该方法。注意的是这里的方法名应该和布局文件中onClick属性的方法名相同,该方法必须是public方法。

    public void onButtonClick (View view){
        Toast.makeText(MainActivity.this,"you have clicked Button3",Toast.LENGTH_SHORT).show();
    }
}

在布局文件中的设置

<Button
        android:layout_below="@id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button3"
        android:text="Button3"
        android:onClick="onButtonClick"/>
posted @ 2019-04-14 20:58  20189205黄铸君  阅读(179)  评论(0编辑  收藏  举报