自定义 ViewGroup 示例?
Posted
技术标签:
【中文标题】自定义 ViewGroup 示例?【英文标题】:custom ViewGroup example? 【发布时间】:2011-08-05 12:07:35 【问题描述】:我在 SO、Google、android 文档上搜索过这里...
但是我找不到带有自定义视图组示例的单个 sn-p 代码,我最多找到一些模糊的解释...
有人可以提供吗?您如何创建一个可以将其子项放在您想要的位置的视图组?
【问题讨论】:
PadLayout 是一个自定义 ViewGroup,它以相等的距离布置子视图。 【参考方案1】:我认为最简单的例子是 AbsoluteLayout.java 的源代码
https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/AbsoluteLayout.java
您需要覆盖 onMeasure 来测量子项并覆盖 onLayout 来定位它们。
如果你愿意,我也可以分享更复杂的 ViewGroup 代码。
【讨论】:
slund 如果你能分享一下就好了……你能指定为孩子重写的重要功能吗【参考方案2】:这并不简单,您只需在计算出您的视图的确切尺寸后调用super.onMeasure
。
class ProportionalConstraintLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr)
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int)
val exactWidth = 100 //do something to calculate the view widht
val exactHeight = 100 //do something to calculate the view height
setMeasuredDimension(exactWidth, exactHeight)
super.onMeasure(
MeasureSpec.makeMeasureSpec(exactWidth, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(exactHeight, MeasureSpec.EXACTLY)
)
【讨论】:
以上是关于自定义 ViewGroup 示例?的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第四百九十八回:自定义View实例四:获取ViewGroup中的边距)