我在 XML 文件中定义了布局(base_layout.xml
)其中可能包含20+ViewStub
除了 3-5 个其他视图(例如ImageView
and a LinearLayout
含3-5个ImageButton
views.
我应该关心有多少ViewStub
我放置在此布局文件中的视图?
我在developer.android网站上读到:
ViewStub 是一个愚蠢且轻量级的
看法。它没有维度,它没有
画任何东西并且不参与
以任何方式在布局中。这意味着
ViewStub 非常便宜
充气并且非常便宜地保存在
查看层次结构
买20个以上够便宜吗?当然,并不是所有的都被夸大,一次只有 1-2 个。
当我说cheap enough
或谈论存在concerned
,我关心的是 UI 的性能
edit:我正在努力实现的目标:
创建一个布局 XML 文件,它可以作为我所有活动的骨架。每一个Activity
,我会膨胀正确的ViewStub
与活动的布局。由于我有很多活动需要相同的骨架,我希望尽可能地重复使用
我有一个Activity
类是我几乎所有活动的父类。这个父类调用setContentView(R.layout.base_layout);
。对于每个孩子的活动,我所做的就是膨胀相应的ViewStub
inside base_layout.xml
。这样做可以让我拥有一个非常定制的 UI,并且在所有活动布局上使用相同的骨架视图
我认为您不会看到性能受到很大影响。它仍然比从一开始就将它们全部充气要便宜。
拥有如此多存根的缺点是您可能会忽视整个设计。也许将多个视图/项目分组到一个视图组中更有意义。也许你可以解释一下你正在尝试做什么,看看是否有更好的方法来实现它
edit:好吧,而不是拥有多个包含不同子视图的 ViewStub,例如
<ViewStub android:id="@+id/stub"
android:inflatedId="@+id/activity1"
android:layout="@layout/myActivity1"
/>
<ViewStub android:id="@+id/stub2"
android:inflatedId="@+id/activity2"
android:layout="@layout/myActivity2"
/>
只需有一个 ViewStub 并在您的活动 onCreate() 中执行类似的操作
setContentView(R.layout.base_layout);
ViewStub stub = (ViewStub)findViewById(R.id.stub);
stub.setInflateId(R.id.activity1);
stub.setLayoutResource(R.layout.myActivity2);
stub.inflate();
这样,您的 base_layout 中仍然只有一个 ViewStub,您可以在膨胀之前在代码中进行设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)