我在 SO、Google、android 文档上搜索了这里...
但是我找不到带有自定义视图组示例的代码片段,我最多找到一些模糊的解释......
有人可以提供一个吗?你如何创建一个视图组,你可以把它的孩子放在你想要的地方?
我认为最简单的例子是 AbsoluteLayout.java 的源代码
您需要覆盖 onMeasure 来测量孩子和 onLayout 来定位它们。
如果你愿意,我也可以分享更复杂的 ViewGroup 代码。
这并不简单,您需要做的就是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)
)
}
}