前言

  本章内容是 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 代替。

  二、概述

    Android 中文API (37) —— AbsoluteLayout

    让你指定子元素的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的实例,见源码:

  Android 中文API (37) —— AbsoluteLayout

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. RelativeLayout的布局学习(部分知识点)
  2. android中LayoutParams设置参数的理解
  3. Android OKhttp 上传文件袋参数
  4. android中动态布局(动态加入TextView和ListView)
  5. 为TabLayout设置自定义布局
  6. Android带参数链接请求服务器

随机推荐

  1. android 虚拟sd卡
  2. Android(安卓)SystemUI源代码分析和修改
  3. android 实现多语言
  4. Android(安卓)中编译版本,最小版本, 目标
  5. Android 下的usb框架及功能点
  6. 用charles拦截android设备https,证书无效
  7. Android Studio 官方最新版下载地址(支持
  8. Android(安卓)高仿微信头像截取 打造不一
  9. android 画饼图 Canvas drawArc
  10. visual studio2019 Android SDK API28出