自定义View

时间:2021-7-21 作者:qvyue

定制 Layout 内部布局的方式

  1. 重写 onMeasure() 来计算内部布局
  2. 重写 onLayout() 来摆放子 View
    重写 onMeasure() 的三个步骤:
  3. 调用每个子 View 的 measure() 来计算子 View 的尺寸
  4. 计算子 View 的位置并保存子 View 的位置和尺寸
  5. 计算自己的尺寸并用 setMeasuredDimension() 保存
    计算子 View 尺寸的关键
    计算子 View 的尺寸,关键在于 measure() 方法的两个参数——也就是子 View 的
    两个 MeasureSpec 的计算。
    子 View 的 MeasureSpec 的计算方式:
    结合开发者的要求(xml 中 layout_ 打头的属性)和自己的可用空间(自己的
    尺寸上限 – 已用尺寸)
    尺寸上限根据自己的 MeasureSpec 中的 mode 而定
    EXACTLY / AT_MOST:尺寸上限为 MeasureSpec 中的 size
    UNSPECIFIED:尺寸无上限
    重写 onLayout() 的方式
    在 onLayout() 里调用每个子 View 的 layout() ,让它们保存自己的位置和尺
    寸。
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。