有没有办法动态设置setContentView(int id)?

时间:2011-11-23 20:48:34

标签: android dynamic android-activity

我希望能够循环遍历xml布局文件列表,而不必在setContentView参数中指定特定的文件。

显然类型不正确,但是类似:

ArrayList<String> pages = new ArrayList<String>();
//(Where each of the xml pages are stored like R.layout.page1, R.layout.page2, etc)
setContentView(pages.get(0));

这有可能吗?

3 个答案:

答案 0 :(得分:3)

您应该使用ViewFlipper小部件。这是一个example

以这种方式管理内容视图及其子窗口小部件更加清晰。

无论如何,可以使用Resources.getIdentifier方法从名称中获取资源ID。

答案 1 :(得分:2)

是。这是可能的。但有两点说明:

  1. ID为int s,而不是String s。
  2. 您需要妥善管理其中的观点。

答案 2 :(得分:2)

在我创建的应用程序中,我使用以下代码将图像按钮设置为特定资源:

imgBtnCard.setImageResource(this.getResources()
    .getIdentifier("com.twp.cptshitface:drawable/" +
        cardType + cardDetails[1] , null, null));

我想说这就是你要找的东西:

int resLayoutId = this.getResources().
    getIdentifier("your.package.namespace:layout/" +
    pages.get(0), null, null);

setContentView(resLayoutId);
// where pages.get(0) returns a string such as "main2"

我已经在onCreateMethod中快速测试了这段代码。

如果添加更多布局和/或资源,请记得清理项目,以便更新ID!