我正在尝试以编程方式将layout.xml文件的ID传递给View.inflate方法,但不确定如何处理。我有一段测试代码,我正努力开始工作,如您所见,我已经尝试过将它作为String传入,但这不起作用。

有任何想法吗?谢谢

LinearLayout main = (LinearLayout) findViewById(R.id.mainLayout);
for (int i = 0; i < 3; i++) {
        String boxToInflate="R.layout.box"+Integer.toString(i);
        LinearLayout ll = (LinearLayout) View.inflate(MainActivity.this, boxToInflate, null);
        main.addView(ll);
}


编辑:几分钟后。

我想我可能会在此测试代码方面取得一些进展:

    // Get outer relative layout
    LinearLayout main = (LinearLayout) findViewById(R.id.mainLayout);
    for (int i = 0; i < 3; i++) {
        // String boxToInflate="R.layout.box"+Integer.toString(i);
        int resID = getResources().getIdentifier("box" + i, "id",
                getPackageName());
        LinearLayout ll = (LinearLayout) View.inflate(MainActivity.this,
                resID, null);
        main.addView(ll);
    }

最佳答案

int layoutId = getResources().getIdentifier("box"+i, "layout", getPackageName());


它也适用于其他事物,例如可绘制对象(“ drawable”而不是“ layout”)等。只需替换第二个参数即可。

编辑:看到您的编辑,只需将“ id”替换为“ layout”,就可以了。

关于android - Android将R.layout.extra_layout动态传递给View.inflate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26452200/

10-12 06:13