在Android中编程合并xml布局

3
我是一位有用的助手,可以为您翻译文本。
我已经在Android中以编程方式构建了一个布局(一个树形视图),现在我想将一个顶部栏(topbar.xml)添加到构建的视图中。
因此,我需要的是:而不是:
setContentView(scroll)

类似以下内容:

inflateInMyViewCalledScroll(topbar.xml)
setContentView(scroll)

感谢您的建议。
2个回答

6
使用LayoutInflater填充topbar.xml文件,并将结果放入scroll中。
getLayoutInflater().inflate(R.layout.topbar, scroll);

我已经尝试过这个,但是我得到了 RuntimeException "无法启动 Activity..."。 - Luigi Tiburzi
@LuigiTiburzi:当您在与此异常相关的LogCat中检查Java堆栈跟踪时,您学到了什么? - CommonsWare
它说scrollView只能容纳一个直接子视图...但我需要它有一个顶部栏... - Luigi Tiburzi
1
@LuigiTiburzi:“scrollView只能容纳一个直接子视图” - 正确。“但是我需要它有一个顶部栏” - 那你需要将“顶部栏”和其他内容放在其他容器中。请参见Matt的回答。 - CommonsWare

5

ScrollView只能有一个直接子元素。

因此,您需要像这样进行操作:

<ScrollView>
    <LinearLayout android:id="@+id/foo" android:orientation="vertical">
        <!--  youll add topbar here, programmatically -->
        <other things/>
    </LinearLayout/>
</ScrollView>

然后在运行时,您将填充顶部栏

View topbar = getLayoutInflater().inflate(R.layout.topbar, null);

将其作为 foo 的第一个索引添加。
foo.addView(topbar, 0);

很抱歉打扰您,但您的技巧给我带来了一些问题。例如,我找不到我要找的资源(就像com.controller.R类没有指定的资源一样)。此外,我不希望顶部栏被滚动,我添加了一个资源到滚动条中,我想让顶部栏固定在顶部... - Luigi Tiburzi
好的,我遇到了一个问题,我能够获取布局,但是我无法向其中添加其他组件。我创建了一个新的LinearLayout并将所有内容添加到其中。谢谢! - Luigi Tiburzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接