我在这里搜索了SO,在谷歌上搜索了android文档...
但我找不到一个自定义视图组示例的代码片段,我发现最多有些含糊不清的解释......
有人可以提供吗?如何创建一个可以将子项放在所需位置的视图组?
答案 0 :(得分:12)
我认为最简单的例子是AbsoluteLayout.java
的来源您需要覆盖onMeasure以测量子项,并使用onLayout来定位它们。
如果你愿意,我可以分享更复杂的ViewGroup代码。
答案 1 :(得分:0)
这不是很简单,您需要做的就是在计算出您的视图的精确尺寸后调用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)
)
}
}