我想创建一个自定义的对角线布局,例如androids预定义的线性布局。所以我开始使用一个扩展ViewGroup的类并重写OnLayout和OnMeasure方法。但是我发现很难理解在哪里编写所有的alligning逻辑视图使得它们将被对角放置
我在其上阅读了几篇博客How to Create Custom Layout in Android by Extending ViewGroup Class
此外,还有谷歌I / O视频 但仍然不清楚如何开始创建对角线布局..有人建议在这方面任何额外的资源.. ???
答案 0 :(得分:1)
衡量儿童的逻辑应该在onMeasure
。在这里,您希望所有儿童身高的总和与heightMeasureSpec
中给出的身高一样大。宽度也一样。
为此,您可以将measureSpec的宽度和高度除以子项数,并使用这些计算值调用子视图measure
方法。
定位孩子的逻辑是onLayout
。在这里,您将一个接一个地调用子视图layout
方法,在布局每个子项后将其传递位置(左,上,...)递增。
您必须在两种方法中处理子视图边距以及容器填充。
Lucas Rocha对自定义视图有很好的article(有很多逆向工程)。
答案 1 :(得分:0)