Android布局小记

. 什么是布局

   就是把界面中的控件按照某种规律摆放到指定的位置

 

2. 布局的二种实现

   代码

   xml配置文件:res/layout目录下

     注:也可以同时使用xml和代码

 

3. 布局的基本属性

   取值范围

   { //效果是一样的获取到父容器的宽度或者高度

     fill_parent//过时

     match_parent//不过时

wrap_content//自身元素需要的宽度或者高度

   }

固定值

   {

     dp 控件大小  理解为长度单位和px差不多

     sp 文字大小

   }

 

padding 内边距

   margin 外边距

 

 android:gravity:控件内部的元素(理解为在父元素上控制子元素位置)

   android:layout_gravity:控件所在父元素的位置(理解为在自身元素控制自己的位置)

4. 常见布局

   线性布局(重点) LinearLayout

 表格布局(几乎不用)

   帧布局

   

   绝对布局

   相对布局  RelativeLayout

   网格布局

  1. 线性布局(重点)

layout_gravity="vertical|horizontal"//vertical垂直排列  horizontal水平排列

fill_horizontal//填充水平

 

 

LinearLayout布局中Layout_weight属性的作用

  8.1 首先声明只有在Linearlayout中,layout_weight属性才有效。

  8.2 它是用来指定(剩余空闲空间)的分割比例,而非按比例分配整个空间。

  8.3 另外android:layout_weight会引起争议,是因为在设置该属性的同时,

      设置android:layout_width为wrap_content和match_parent会造成两种截然相反的效果。

  8.4 如果想用layout_weight平均分配空间,正确方式是将layout_width(或layout_height)设置为0dp,

      再通过layout_weight按比例分配空间

  注:关键点在于搞清楚什么是剩余空闲空间

 

 FrameLayout帧布局(就好象一张张卡片堆叠上去,后面会盖出前面的)

 通过设置边距和位置决定出现位置

    注:帧布局有点类似于awt的CardLayout都是把组件一个一个叠加到一起,

        但CardLayout能将下面的组件移上来,但FrameLayout没有提供此功能

 

    ImageView

      src

      scaleType="fitXY" XY方向拉伸

 

     android:scaleType="fitXY"

            android:src="@drawable/img18"

 

    1. 相对布局窗口内子组件的位置总是相对兄弟组件、父容器来决定的,因此叫相对布局
    2. 如果A组件位置是由B组件的位置决定的,Android要求先定B组件,再定义A组件
    3.  注1:注意XML中组件的顺序,不然会报错

     注2:android新版本中组件的定义顺序没有关系

RelativeLayout支持的二个xml属性

    1.3.1 android:gravity :设置该布局容器内各子组件的对齐方式

    1.3.2 android:ignoreGravity:设置哪个组件不受gravity属性的影响

1.4 控制子组件布局的内部类RalativeLayout.LayoutParams

      此内部类的属性分二类

    1.4.1 boolean

          相对父元素

          alignParent...

          center...(只有在父元素中才存在水平或垂直居中等)

 

 

相对布局(重点)RelativeLayout

layout_alignParentBottom//出现在父元素的底部设置true或者false

layout_centerInParentm//出现在父元素的正中间设置true或者false

layout_alignParentRight//出现在父元素的右边设置true或者false

layout_alignParentLeft//出现在父元素的左边设置true或者false

id="@+id/需要设置的id"//给控件设置id

          @+id和@id的区别

          @+id/x1(添加新ID)

          @id/x1(引用此ID)

          相对于指定元素(根据ID指定)

layout_alignRight="@id/id3"//出现在指定元素的某位置

layout_toRightOf,layout_toLeftOf(是一种靠拢动作)

   

例二:网格布局GridLayout

--4的跨行出现的问题,因为4的向下没有东西拦住了

  1. 常用属性rowCount(行数)、columnCount(列数)

 GridLayout中子控件相关属性:layout_gravity="fill_horizontal(水平填充)|fill_vertical(垂直填充)"

 

 2.2 Space标签的作用:挡住控件,让其不超出网格的范围

      <Space android:layout_width="wrap_content" android:layout_height="wrap_content"/>

 

猜你喜欢

转载自blog.csdn.net/yjt520557/article/details/83118950
今日推荐