我相信你可以通过几种方式做到这一点。我没有尝试过动态创建这样的整个层次结构,但我已经多次以这种方式添加按钮、单选按钮、文本视图和其他视图。在这些情况下,我刚刚使用AddView()
.
我认为最简单的方法是“自上而下”地创建它,即创建第ScrollView
一个并添加任何设置,然后向下添加其他视图。我通常会做这样的事情:
// Call other methods to create the views first:
ScrollView myScrollView = createMainScrollView();
LinearLayout myHorizontalLayout = createLinearLayoutForAbc();
LinearLayout myOtherLayout = createLinearLayoutForXyz();
TextView myFirstTxt = (...)
(..etc..)
现在以正确的方式填充它们:
myScrollView.addView(myHorizontalLayout);
myHorizontalLayout.addView(myOtherLayout);
(..etc..)
注意:我相信这应该有效,但我不能保证;如果在添加到外部视图后对内部视图的引用不再正确(例如,myHorizontalLayout
不再是对 下的实际视图的有效引用myScrollView
),您可能无法将子视图添加到该内部视图。不过,不确定这一点。
(如果是这样,您可能会尝试findViewByName()
在添加每个视图后使用获取新的正确引用,但我认为这不是最佳解决方案)。
我会先尝试第一种方法——至少做一个概念证明,看看你可以在至少三层深的层次结构中添加视图。那应该会给你答案。如果它不起作用,我想我会尝试按照您在问题中建议的相反顺序添加它们,只是为了看看这是否有效(也许只是在我的第二个代码块中切换顺序?)。
抱歉回答的不准确,希望对大家有所帮助。