有没有办法在运行时向Android应用程序添加布局?

有没有办法在运行时向Android应用程序添加布局?,android,android-layout,Android,Android Layout,我想创建一个可以随时间添加布局的应用程序。例如,该应用附带一组已知的布局,但可以下载新的主题包,而无需分发新的apk。我不希望这些内容被存储在layouts目录中——只要我有办法加载它们,它们可以存储在应用程序可以访问的任何地方 如果我要将布局与LayoutFlator一起使用,看起来需要将布局编译成二进制形式。那么,有没有一种方法可以在发布之前编译它们呢?我真的不想为这些文件编写解释器,因为我确信它会慢一点。通过LayoutInflater在另一个布局中创建此布局文件 假设您想在主布局中添加此

我想创建一个可以随时间添加布局的应用程序。例如,该应用附带一组已知的布局,但可以下载新的主题包,而无需分发新的apk。我不希望这些内容被存储在layouts目录中——只要我有办法加载它们,它们可以存储在应用程序可以访问的任何地方


如果我要将布局与LayoutFlator一起使用,看起来需要将布局编译成二进制形式。那么,有没有一种方法可以在发布之前编译它们呢?我真的不想为这些文件编写解释器,因为我确信它会慢一点。

通过LayoutInflater在另一个布局中创建此布局文件

假设您想在主布局中添加此布局。所以,在主布局中使用线性布局,并通过mainlayout.add(视图)在主布局中使用此列表布局,这里的视图是LayoutFlater viw

例如:

private View view;
    view = getLayoutInflater().inflate(R.layout.image_sub_layout,null);
     topicLinearLayout.addView(view); // main Layout Linear layout

谢谢。

您可以通过编程方式创建这些布局。XML布局文件在编译时进行预处理,以提供优化。换句话说,一个非常复杂的XML布局(如果不是在编译时预处理)可能需要很长时间才能膨胀,从而导致延迟和用户体验问题。简言之,不,您不能以您想要的方式膨胀XML文件。我阅读的文档在解释这一点时使用了“当前”一词,这表明Android的未来版本可能会允许这样做,但显然这不是保证。@原谅我知道我可以通过编程方式创建它们-这是我关于自布局以来必须编写解释程序的评论。@Squonk这是我害怕的。如果他们能提供一个工具来编译布局,以便在apk之外发布,那就太好了。@Ben:是的,同意。我知道你想做什么的原因,尽管我没有要求自己去做。不幸的是,除了在构建时,我不知道有任何工具可以做到这一点,显然这意味着布局是打包的,并且在膨胀期间只能通过资源ID访问。我怀疑这可能意味着对核心Android代码进行一些重大更改,以便能够使用“外部”布局资源。