XML动态创建

时间:2012-09-18 08:05:25

标签: android xml layout view

我想动态创建XML布局,但我有一个问题。

说我有这样的事情(从“大纲”角度看布局):

-ScrollView

---线性布局(垂直)(LL1)

-------线性布局(水平)(LL2)

-----------图像视图(IV1)

-----------线性布局(垂直)(LL3)

--------------- TextView

--------------- TextView的

所以我的问题是,我将从最内层布局(LL3)开始,然后添加2个TextViews然后向上分支(到LL2然后是LL1,然后是ScrollView),并添加到其他视图&布局?

1 个答案:

答案 0 :(得分:0)

我相信你可以通过几种方式做到这一点。我没有尝试动态创建这样的整个层次结构,但我已经多次添加按钮,单选按钮,文本视图和其他视图。在这些情况下,我刚刚使用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()获取新的正确引用,但我认为这不是最佳解决方案)。

我首先尝试第一种方法 - 至少做一个概念验证,看看你可以在层次结构中添加至少三层深度的视图。那应该给你答案。如果工作,我想我会尝试以相反的顺序添加它们,正如您在问题中所建议的那样,只是为了看看它是否有效(可能只是在我的第二个代码块中切换顺序? )。

对于不精确的答案表示歉意,希望无论如何都希望它有所帮助。