您不能使用外部 XML 文件来动态调整布局。
的文档LayoutInflater#inflate(XmlPullParser, ViewGroup)
解释了原因:
重要 出于性能原因,视图膨胀在很大程度上依赖于在构建时完成的 XML 文件的预处理。因此,目前无法在运行时在纯 XML 文件上使用带有 XmlPullParser 的 LayoutInflater。
但是您可以在代码中动态创建布局,请参阅例如Android 运行时布局教程
因此,您可以在服务器上放置一个包含布局信息的文件,在您的应用程序中获取它,解析它并动态创建布局。这将是很多工作,因为您基本上会复制 Android 的LayoutInflater
. 您显然可以将格式简化为您需要的基础知识,但恕我直言,仍然需要做很多工作。
假设您的布局信息只是一个具有字段名称的纯文本文件
name
surname
email
然后,您可以逐行阅读并EditText
以如下方式为每个内容创建一个简单的
private View getDynamicLayout(ArrayList<String> lines) {
LinearLayout ll = new LinearLayout(this);
for (String line : lines) {
EditText et = new EditText(this);
// fill it with some text
et.setText(line);
ll.addView(ll);
}
return ll;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<String> layoutConfig = readConfigFromFile();
View layout = getDynamicLayout(layoutConfig);
setContentView(layout);
}
但除非您真的需要,否则我建议您以常规方式更新应用程序。使用预处理布局而不是自己构建该信息也更快。
还要注意不要像上面的例子那样在 UI 线程中进行大量磁盘/任何网络访问(读取文件)。这应该在后台任务中完成。