导航

Android0_布局介绍

Posted on 2017-06-16 00:16  Young哥哥  阅读(19)  评论(0)    收藏  举报
1. LinearLayout深入
在此布局中的子控件都是按水平或垂直方式进行排列
android:layout_weight
权重属性。在一般开发中主要用于适配多种屏幕
按照给定的比例分配当前父容器的剩余空间。
LinearLayout为横向时,影响的是组件的宽度属性
LinearLayout为纵向时,影响的是组件的高度属性
一般会将影响的宽度或高度属性设置为0dp,平均分配屏幕
android:layout_gravity
线性布局内部组件设置的在布局中的对齐方式
(布局内部组件)
子UI组件在LinearLayout中的对其方式
top,bottom,left,right,center,center_vertical,center_horizontal

LinearLayout为横向时,垂直方向的对其功能有效
LinearLayout为纵向时,水平方向的对其功能有效
android:gravity
(组件内部的对其方式)
布局或组件内部内容的对其方式
top,bottom,left,right,center,center_vertical,center_horizontal
android:layout_margin
一个组件与相邻组件的距离
top,bottom,left,right
android:layout_padding
组件内部内容与组件边界的距离
top,bottom,left,right
2. 相对布局
 即子控件的位置可以取决于兄弟控件或者父控件的位置
   与LinearLayout相比,减少嵌套使用,界面代码简洁
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
与相对布局的对其方式
有四个方向
android:layout_alignBottom="@+id/button1"
android:layout_alignTop="@+id/button1"
android:layout_alignLeft="@+id/button1"
android:layout_alignRight="@+id/button1"
与button1组件的对其方式
有四个方向
android:layout_toRightOf="@+id/button1"
android:layout_toLeftOf="@+id/button1"
android:layout_above="@+id/button1"
android:layout_below="@+id/button1"
在button1组件的那个位置
有四个方向
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_centerInParent="true"
在相对布局中的对其方式
android:layout_alignBaseline="@+id/button1"
组件的文字底部与button1的文字的底部对其
组件之间不能相互依赖,不然会出错
 

3. 表格布局
TableLayout是指将子元素的位置分配到行或列中。Android的一个TableLayout有许多TableRow组成,每一个TableRow都相当与一行。
 android:stretchColumns="1"表示表格布局管理器中第2列内组件可以扩充到的有可用空间。
 

全局属性也即列属性,有以下3个参数:

  android:stretchColumns    设置可伸展的列。该列可以向行方向伸展,最多可占据一整行。

  android:shrinkColumns     设置可收缩的列。当该列子控件的内容太多,已经挤满所在行,那么该子控件的内容将往列方向显示。

  android:collapseColumns 设置要隐藏的列。

   示例:

  android:stretchColumns="0"           第0列可伸展

  android:shrinkColumns="1,2"         第1,2列皆可收缩

  android:collapseColumns="1,2"         隐藏1,2列

 

 
 
4. 网格布局
 android:orientation="horizontal"表示采用水平布局,垂直为vertical。
 该网格布局管理器采用5行4列。
 

与LinearLayout布局一样,也分为水平和垂直两种方式,默认是水平布局,一个控件挨着一个控件从左到右依次排列,但是通过指定android:columnCount设置列数的属性后,控件会自动换行进行排列。另一方面,对于GridLayout布局中的子控件,默认按照wrap_content的方式设置其显示,这只需要在GridLayout布局中显式声明即可。

       其次,若要指定某控件显示在固定的行或列,只需设置该子控件的android:layout_row和android:layout_column属性即可,但是需要注意:android:layout_row=”0”表示从第一行开始,android:layout_column=”0”表示从第一列开始,这与编程语言中一维数组的赋值情况类似。

  最后,如果需要设置某控件跨越多行或多列,只需将该子控件的android:layout_rowSpan或者layout_columnSpan属性设置为数值,再设置其layout_gravity属性为fill即可,前一个设置表明该控件跨越的行数或列数,后一个设置表明该控件填满所跨越的整行或整列。

 

5. 帧布局

FrameLayout帧布局在屏幕上开辟出了一块区域,在这块区域中可以添加多个子控件,但是所有的子控件都被对齐到屏幕的左上角。帧布局的大小由子控件中尺寸最大的那个子控件来决定。如果子控件一样大,同一时刻只能看到最上面的子控件。

FrameLayout继承自ViewGroup,除了继承自父类的属性和方法,FrameLayout类中包含了自己特有的属性和方法,如下表所示。

属性名称 对应方法 描述
android:foreground setForeground(Drawable) 设置绘制在所有子控件之上的内容
android:foregroundGravity setForegroundGravity(int) 设置绘制在所有子控件之上内容的gravity属性

5. 绝对布局
已淘汰
layoutX  layoutY

 
适配器
    适配器是一个连接数据和AdapterView的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便。
    常用适配器有:BaseAdapter、SimpleAdapter、ArrayAdapter、 和 CursorAdapter、SimpleCursorAdapter、PagerAdapter、FragmentPagerAdapter等。
    AdapterView是指使用适配器显示的组件,常见有ListView,GridView,Gallery,Spinner,AutoCompleletTextView等 
 
 
 ArrayAdapter 数组适配器  一般配合AdapterView用来显示简单的文字内容
// 1 准备数据
 String[] data = { "随悟空", "飘渺之旅", "海贼王", "星星的你" };
// 2. 创建适配器
  /**
   * 2: itemlayout 布局 3: 显示的数据
   */
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, data);
//3. 设置到ListView
  list.setAdapter(adapter);
//如果数据不在数组中
//1. 创建Adapter
  ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1);
//2. 添加数据
  adapter2.add("额额额额额额");
  adapter2.add("鹅鹅鹅");
  adapter2.add("呵呵");
  adapter2.add("额额额额额额");
//3. 设置显示
list.setAdapter(adapter2);