Android:是否可以制作一个视图的副本?

我正在处理的应用程序需要dynamic布局,显示configuration文件的Horizo​​ntalScrollView。 configuration文件只是一个带有图片和文本的RelativeLayout。 由于我从数据文件中获取数据,我需要为每个configuration文件创build一个相对布局。 起初,我在for循环中以编程方式创build了每个RelativeLayout,然后将其添加到父视图。 这有用,但我不想这样做。 我想根据设备的屏幕大小等使用不同的布局文件。

然后我想。 那么,如果我有一个只有一个configuration文件的布局呢? 我的代码可以用findViewById()获得一个configuration文件,然后基于它创build新的configuration文件! 换一种说法:

  // get the layout profileLayout = (LinearLayout) findViewById(R.id.profileLayout); // get the first profile in the layout originalProfile = (RelativeLayout) findViewById(R.id.profile1); // make copy of profile temporaryProfile = originalProfile; // make changes to the this profile and add it back profileLayout.addView(temporaryProfile); 

当然,这是行不通的,因为这是java,temporaryProfile现在是对originalProfile的引用。 那么有没有办法制作这个RelativeLayout的副本? 我知道LayoutInflater,但我仍然不明白它是如何工作的。 还有Object.clone()

Related of "Android:是否可以制作一个视图的副本?"

没那么多。 听起来像你的特定情况下,可以从某种types的ListView和适配器中获益(请参阅参考资料)。 如果没有,那么LayoutInflater 最好的答案,因为它正是你想要的。 获得一个你可以使用它来“膨胀”你在XML布局文件中定义的任何视图,并做任何你想要的。

这里是一个很好的讨论inflater。

您可以使用新的上下文复制您的充气机。 布局Inflater – Android开发人员

为什么不简单地使用包含在你想要的布局的XML文件。