我有一个允许用户动态构建布局的活动。它由一个LinearLayout,一个添加一个新的LinearLayout和一个按钮来保存的按钮组成。每次单击该按钮时,都会创建一个包含它自己的按钮的新LinearLayout。单击该新按钮并在该LinearLayout内创建TextView等。以编程方式构建xml布局文件
我希望用户能够保存和恢复其布局。所以我想我可以通过childviews运行,并编程建立一个XML布局文件,我后来setContentView(new.xml)。
我正在使用指南here将xml文件写入SD卡。基本上,当我为xml标签创建一个新的LinearLayout I setTag(“LinearLayout”),新的Button ... setTag(“Button”)等等。然后我运行以下for循环来创建xml。
for (int i = 2; i < mainLayout.getChildCount(); i++) {
serializer.startTag(null, mainLayout.getChildAt(i).getTag().toString());
for (int b = 1; b <= findViewById(mainLayout.getChildAt(i)).getChildCount(); b++) {
serializer.startTag(null, findViewById(mainLayout.getChildAt(i)).getChildAt(b).getTag().toString());
serializer.attribute(null, "android:text", findViewById(mainLayout.getChildAt(i)).getChildAt(b).getText().toString());
serializer.endTag(null, findViewById(mainLayout.getChildAt(i)).getChildAt(b).getTag().toString());
}
serializer.endTag(null, mainLayout.getChildAt(i).getTag().toString());
}
如果你加1周的LinearLayout,并添加1周的TextView到的LinearLayout,它应该输出继电器:
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<LinearLayout>
<LinearLayout>
<TextView android:text="the text"></TextView>
</LinearLayout>
</LinearLayout>
这似乎不是最好的办法然而,可以这样做。我很好奇,如果有人知道这是否会实际工作,或者如果有更好的方法?