博客
关于我
Android 获取子 View 的位置及坐标的方式
阅读量:592 次
发布时间:2019-03-11

本文共 1299 字,大约阅读时间需要 4 分钟。

一、View 概述

视图 (View) 是 Android 中布局组件的核心类,负责在屏幕上显示用户界面。Versionhistory TextView 是最常见的视图类型之一,它用于显示只读文本,例如 Activity 中的提示信息。

1.2、View 分类

View 可以分为两种类型,从功能上看,主要分为单一视图和视图组。单一视图(如 TextView、EditText)没有子元素,而视图组(如 LinearLayout、RelativeLayout)可以包含多个子 View。

1.3、View 类简介

View 是所有 Android 视图组件的基类,其构造函数有四个版本,主要区分调用方式:

  • 通过 new View(Context) 创建默认
  • 通过 View(Context, AttributeSet) 创建从 XML 获得属性
  • 过_inp 代码注释可以看出,前者用于程序中直接 new 创建,后者用于 XML layouts 中定义视图。

    二、Android 坐标系

    Android 的坐标系有略微不同,是从左上角开始的.x 增大向右,.y 增大向下。它与传统数学坐标不同,但在开发中使用时需要注意这一点。

    三、View 的位置

    View 的布局由四个属性决定:Top、Bottom、Left 和 Right。每个属性指定子 View 在父 View 中的位置。例如,在 LinearLayout 中使用 gravity:center 会使子视图居中。通过 getTop() 等方法可以获取 View 的具体坐标。使用绝对值布局时,可以直接指定 x 和 y 的位置值,如 android:layout_x="200px"。

    四、获取 View 位置的方式

    要获取 View 的位置,可以通过四个方法:getTop()、getLeft()、getBottom() 和 getRight()。这些方法返回的是相对父 View 的坐标值。例如,在上文中使用 延迟加载 的技巧,可以确保 View 已绘制完成后再获取其位置。

    需要注意的是,在布局设置为绝对值布局(absoulteinlayout)时,座标是根据父控件的绝对值位置来定位的。此外,建议在获取 View 的坐标时,避免在 Activity.onResume() 中直接调用,否则可能会因为 View 未绘制完成而得到错误的初始位置值,一般建议在 ViewTreeObserver 中添加绘制完成的 监听器.

    此外,在开发中可以根据需要选择合适的布局方式。虽然绝对值布局提供了高精度的定位,但建议在大多数情况下优先使用相对值布局,以便于布局维护和代码简化。例如,利用 LinearLayout 中的 gravity 属性可以轻松实现中心对齐,降低代码的复杂性。

    最后,通过源码注释可以深入理解 View 的工作原理,并学会更高效地管理 View 的布局和定位。在实际开发中,合理使用 LayoutInterpolator anim可以实现更流畅的布局过渡效果。希望这份汇总能够帮助开发者快速掌握核心知识点,并提升日常开发效率。

    转载地址:http://isxtz.baihongyu.com/

    你可能感兴趣的文章
    Python3编写网络爬虫10-数据存储方式三-CSV文件存储
    查看>>
    python3读取redis返回数据带有'b'的问题
    查看>>
    Python3连接MySQL
    查看>>
    Python关于isinstance函数的解析 | 附Demo(全)
    查看>>
    Python3:setup.py:完成所有任务的PIP安装(Build_ext+Install)
    查看>>
    python4.0 gil_Python 并发编程系列--1、浅谈GIL历史及对多线程的影响
    查看>>
    python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码
    查看>>
    Python: AES加密与解密
    查看>>
    Python: Range() 最大尺寸;动态的还是静态的?
    查看>>
    Python: Windows下用 multiprocessing 的深坑
    查看>>
    python:Could not find platform independent libraries <prefix>解决方法
    查看>>
    Python:datetime tzinfo 时区名称文档
    查看>>
    Python:deepcopy(list) vs new_list = old_list[:]
    查看>>
    Python:Google API - 从消息中获取 mimeTypes
    查看>>
    Python:Google API - 从消息中获取 mimeTypes
    查看>>
    Python:subprocess.call,stdout to file,stderr to file,在屏幕上实时显示stderr
    查看>>
    Python:TypeError:无法连接“str“和“int“对象
    查看>>
    Python:XPath 在 ElementTree 中不可用
    查看>>
    Python:从 FTP 服务器下载文件
    查看>>
    python:从列表中创建元组列表
    查看>>