繁体   English   中英

Android自定义布局管理器-儿童布局

[英]Android custom layout manager - layout in children

我创建了一个从LinearLayout派生的自定义布局管理器。 (我并没有真正使用很多LinearLayout功能,但我不想关心所有ViewGroup抽象方法。)我只覆盖了

protected void onLayout(boolean changed, int l, int t, int r, int b)

方法,并为其每个子级在MyLayout.onLayout(...)中调用child.layout(...)。 所有其他东西都是原始的LinearLayout。 它将正常工作,如果孩子是没有孩子的简单控制(MyLayout的孙子),孩子将被正确地放在他们的父MyLayout中。

当我使用一些ViewGroup(LinearLayout,ViewSwitcher,...)将子节点作为MyLayout的子节点时出现问题。 在这种情况下,(MyLayout的)子代放置得很好,但(MyLayout的)孙子代不在每个子代内。 似乎没有正确处理诸如wrap_content,fill_parent,layoutWeight之类的参数和值。 例如,MyLayout中的ViewSwitcher不显示其内容,fill_parent的LinearLayouts(MyLayout的子代)子代(MyLayout的孙子)的大小为0px,CompoundButton(MyLayout的子代)有时不显示其文本...

似乎myLayout.onLayout中的child.layout(...)正确设置了每个孩子的大小和位置,但是我需要调用其他一些方法来使每个孩子的布局运行良好(如果孩子是带有孩子的ViewGroup)。 是否有类似的东西或刚刚更改了onLayout的MyLayout应该可以正常工作?

感谢您的所有建议。

听起来你需要考虑到每个孩子的测量和呼叫测量()。 如果您的子级是视图组,而子级是视图,则您要遍历子级并调用measure(int,int)。 然后孩子们应该对孙子孙女采取措施。

看看linearLayout来源: http//www.grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.6_r1/android/widget/LinearLayout.java# LinearLayout.onMeasure%28int%2Cint 29%

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM