我在使用自定义视图组和自定义视图时遇到了一些问题.我已经为此做了很多搜索,但是如果我错过了什么,请随时将我链接到那里.是的我已经在android开发网站上阅读了有关Views,ViewGroups,测量和布局传递的所有内容,但我仍然感到困惑,没有任何Java示例代码.
1)我的理解是,子视图需要实现onMeasure和onLayout.这是否意味着父ViewGroup需要为其每个子节点手动调用measure()和layout()?如果是这样,这些电话应该在哪里?他们应该使用Parent的onMeasure和onLayout方法吗?如果是这样,第一个measure()和layout()调用将在哪里启动整个递归过程.
2)我看到可以使用以下内容设置子视图的布局参数.这段代码应该放在父视图组的onLayout中吗?
CustomView cust = new CustomView(context);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
cust.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)
如果我想设置一个MeasureSpec,我是否只是将其添加为另一个规则?
3)是否可以创建CustomView的实例并将其从CustomViewGroup的代码中添加到CustomViewGroup,如果是这样,我应该将此代码放在CustomViewGroup构造函数中吗?如果没有,是否只是了解您创建ViewGroups然后从不同的外部类添加所有子项?
4)练习为CustomViewGroup的onDraw()方法中的每个子视图调用draw()是否常见?
现在,当我执行一些代码来绘制圆形时,它会执行绘制方法,但屏幕上实际上没有显示任何内容.当我将它添加到relativeLayout而不是我的customViewGroup时,我没有问题...所以我想我错过了关于如何让viewgroups显示的关键部分.(是的,我将ContentView设置为ViewGroup).
提前致谢!
编辑:请不要向我展示XML,我在Java中都是这样做的.
我在这里搜索了SO,在谷歌上,在android文档上...
但我找不到一个自定义视图组的代码片段,我发现最多一些模糊的解释......
有人可以提供吗?如何创建一个视图组,您可以将其子项放在您想要的位置?