Android 中文API (37) —— AbsoluteLayout

简介:

一、结构

    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的布局参数,可能从指定的一组布局参数中复制适当的属性。

参数

     被转换成一组适合当前 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 >

 本文转自博客园农民伯伯的博客,原文链接:Android 中文API (37) —— AbsoluteLayout,如需转载请自行联系原博主。  

目录
相关文章
|
9月前
|
Android开发
Android 11 修改libcore update-api 遇到的问题
Android 11 修改libcore update-api 遇到的问题
260 1
|
定位技术 API 开发工具
Android 按照步骤接入百度地图API,定位显示不了解决办法
Android 按照步骤接入百度地图API,定位显示不了解决办法
428 1
|
6月前
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
192 0
|
8月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
102 2
|
8月前
|
Java Linux API
微信API:探究Android平台下Hook技术的比较与应用场景分析
微信API:探究Android平台下Hook技术的比较与应用场景分析
|
9月前
|
SQL API Android开发
Android API:Activity.managedQuery()
Android API:Activity.managedQuery()
61 2
|
8月前
|
开发工具 Android开发 数据安全/隐私保护
12. 【Android教程】绝对布局 AbsoluteLayout
12. 【Android教程】绝对布局 AbsoluteLayout
140 0
|
9月前
|
API Android开发
Android Framework增加API 报错 Missing nullability on parameter
Android Framework增加API 报错 Missing nullability on parameter
406 1
|
9月前
|
API 定位技术 开发工具
Android Studio2021.1.1 高德地图api调用这一篇就够了
Android Studio2021.1.1 高德地图api调用这一篇就够了
|
9月前
|
API Android开发
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
117 3

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    Android历史版本与APK文件结构
  • 3
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 6
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 8
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 10
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡