7

我正在构建一个动态生成一些标签和视图的应用程序。我定义了我的“自定义视图”在 xml 布局中的外观,并从代码中扩展了这个布局。

因为膨胀的布局总是一样的,我只想做这一步。有了布局后,我想缓存它,下次需要时使用它。

问题是,如果我将膨胀的布局放入缓存中(例如在哈希图中)并将其添加到父布局中,下次当我尝试再次添加它时(这次我将从缓存中获取布局)系统说我的布局已经有一个父级。

你知道有什么方法可以在不删除子视图的情况下从父视图中分离子视图吗?

添加了一些代码:

    private static HashMap<String, LinearLayout> mComponentsCache;

// inflate and add the layout in cache
layout = (LinearLayout)mLf.inflate(R.layout.form_textbox, mHolder, false);
mComponentsCache.put(FormFieldType.TYPE_TEXT, layout);
4

1 回答 1

12

你实际上不能这样做。我引用你的评论

I want to do it in this way because is no point to re-inflate the same view which was already inflated. As an example I have to show 5 textboxes which have the same layout but different content.

您每次都必须充气,因为您需要此文本框的 5 个不同实例。如果你不想膨胀,你应该找到一种方法来复制已经创建的布局,这无助于改进,因为复制也是“昂贵的”。

事实上,为了清楚起见,膨胀视图不会经过 XML 解析(以防万一),它是编译代码,因此,努力实现一种创建你的观点的副本是没有意义的。

底线:坚持通货膨胀。

于 2012-08-31T08:38:39.060 回答