前言

  本章内容是 android.widget.AbsoluteLayout,版本为Android 2.2 r1,翻译来自madgoat,欢迎大家访问他的博客:http://madgoat.cn/ ,再次感谢madgoat !期待你一起参与Android API 的中文翻译,联系我over140@gmail.com。

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://www.cnblogs.com/over140/

正文

  一、结构

    public class AbsoluteLayout extends ViewGroup


    java.lang.Object

      android.view.View

        android.view.ViewGroup

  android.widget.AbsoluteLayout


    此类不赞成使用。

     推荐使用 FrameLayout RelativeLayout 或者定制的 layout 代替。

  二、概述

    

    让你指定子元素的xy精确坐标的布局。绝对布局缺乏灵活性,在没有绝对定位的情况下相比其他类型的布局更难维护。

  三、公共方法

public ViewGroup.LayoutParams generateLayoutParams (AttributeSet attrs)

  返回一组新的基于所支持的属性集的布局参数

参数

  attrs 构建layout布局参数的属性集合

  返回值

         一个 ViewGroup.LayoutParams 的实例或者它的一个子类

  四、受保护方法

protected ViewGroup.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

返回一组合法的受支持的布局参数。当一个ViewGroup传递一个布局参数没有通过checkLayoutParams(android.view.ViewGroup.LayoutParams)检测的视图时,此方法被调用。此方法会返回一组新的适合当前ViewGroup的布局参数,可能从指定的一组布局参数中复制适当的属性。

参数

p 被转换成一组适合当前 ViewGroup的布局参数

返回值

an instance of ViewGroup.LayoutParams or one of its descendants

一个ViewGroup.LayoutParams的实例或者其中的一个子节点

protected boolean checkLayoutParams (ViewGroup.LayoutParams p)

(译者注:检测是不是AbsoluteLayout.LayoutParams的实例,见源码:

  

protected ViewGroup.LayoutParams generateDefaultLayoutParams ()

返回一组宽度为WRAP_CONTENT,高度为WRAP_CONTENT,坐标是(00)的布局参数

返回值

一组默认的布局参数或null

protected void onLayout (boolean changed, int l, int t, int r, int b)

在此视图view给他的每一个子元素分配大小和位置时调用。 派生类可以重写此方法并且重新安排他们子类的布局。

参数

changed 这是当前视图view的一个新的大小或位置

l 相对于父节点的左边位置

t 相对于父节点的顶点位置

r 相对于父节点的右边位置

b 相对于父节点的底部位置

protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

测量视图以确定其内容宽度和高度。此方法被measure(int, int)调用。需要被子类重写以提供对其内容准确高效的测量。

约定:当重写此方法时,你必须调用setMeasuredDimension(int, int)来保存当前视图view的宽度和高度。不成功调用此方法将会导致一个IllegalStateException异常,是由measure(int, int)抛出。所以调用父类的onMeasure(int, int)方法是必须的。

父类的实现是以背景大小为默认大小,除非MeasureSpec(测量细则)允许更大的背景。子类可以重写onMeasure(int,int)以对其内容提供更佳的尺寸。

如果此方法被重写,那么子类的责任是确认测量高度和测量宽度要大于视图view的最小宽度和最小高度(getSuggestedMinimumHeight() and getSuggestedMinimumWidth()),使用这两个方法可以取得最小宽度和最小高度。

参数

widthMeasureSpec 强加于父节点的横向空间要求。要求是使用View.MeasureSpec进行编码

       heightMeasureSpec 强加于父节点的纵向空间要求。要求是使用 View.MeasureSpec 进行编码。

  五、补充

    文章链接

      我的Android学习之旅[6]——以示例程序来展示Android的几种布局方式

第六讲:用户界面 View(二)

如何动态改变 AbsoluteLayout布局中其它布局的坐标

    示例代码

< AbsoluteLayout
android:id ="@+id/AbsoluteLayout01" android:layout_height ="wrap_content"
android:layout_width
="fill_parent" >
< TextView
android:text ="TextView01" android:id ="@+id/TextView01"
android:layout_height
="wrap_content" android:layout_y ="10px"
android:layout_width
="wrap_content" android:layout_x ="110px" >
</ TextView >
</ AbsoluteLayout >

  

结束

  声明图片来自文章1 。

更多相关文章

  1. Android(安卓)最火框架XUtils之注解机制详解
  2. Android中Activity状态的保存和恢复:onSaveInstanceState和onRest
  3. android 实用sax 读取xml文件内容
  4. HorizontalScrollView
  5. Android(安卓)getText(int resId)和getString(int resId)
  6. 浅谈Java中Collections.sort对List排序的两种方法
  7. mybatisplus的坑 insert标签insert into select无参数问题的解决
  8. Python技巧匿名函数、回调函数和高阶函数
  9. Python list sort方法的具体使用

随机推荐

  1. Android M5 新特性
  2. [置顶] Android(安卓)Launcher全面剖析
  3. Android(安卓)SettingProvider详解
  4. Android开发——Android手机屏幕适配方案
  5. Android FrameLayout的android:foregroun
  6. 通过判断浏览器的userAgent,用正则来判断
  7. android 入口activity
  8. 简单说明View
  9. Android UI开发点点滴滴(基本控件)
  10. Android简单自定义圆形和水平ProgressBar