自定义ViewGroup示例?

时间:2011-04-14 12:15:30

标签: android viewgroup

我在这里搜索了SO,在谷歌上搜索了android文档...

但我找不到一个自定义视图组示例的代码片段,我发现最多有些含糊不清的解释......

有人可以提供吗?如何创建一个可以将子项放在所需位置的视图组?

2 个答案:

答案 0 :(得分:12)

我认为最简单的例子是AbsoluteLayout.java

的来源

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/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)
        )

    }

}