我在XML文件中(被定义的布局base_layout.xml),其可以包含20+ ViewStub除了其它3-5视图这样的定义ImageView和一个LinearLayout含3-5个ImageButton景色.
我应该关注ViewStub我在此布局文件中放置了多少视图?
我在developer.android网站上阅读:
ViewStub是一个愚蠢而轻量级的视图.它没有尺寸,它不会绘制任何东西,也不会以任何方式参与布局.这意味着ViewStub非常便宜,并且在视图层次结构中保持非常便宜
是否足够便宜,有20多个?并非所有人都被夸大了,一次只有1-2.
当我说cheap enough或谈论存在时concerned,我是关于UI的表现
编辑:
我想要完成的任务:创建一个布局XML文件,它可以作为我所有活动的骨架.在每一个中Activity,我将ViewStub使用活动的布局来扩充正确的.由于我有很多活动需要相同的骨架,我希望尽可能多地重复使用
我有一个Activity班级,几乎是我所有活动的家长.这个父类调用setContentView(R.layout.base_layout);.对于每个孩子的活动,我所做的就是给相应的ViewStub内部充气base_layout.xml.这样做可以让我拥有一个非常自定义的UI,在我的所有活动布局中使用相同的骨架视图
Tse*_*eng 15
我不认为你会看到很大的表现.它仍然比从开始时全部膨胀还要便宜.
拥有这么多存根的缺点是你可能会忽略整个设计.将多个视图/项目组合到一个视图组中可能更有意义.也许你可以解释一下你想要做什么,看看是否有更好的方法来实现它
编辑: 好吧,而不是有多个包含不同子视图的ViewStubs
<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"
/>
Run Code Online (Sandbox Code Playgroud)
只需要一个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();
Run Code Online (Sandbox Code Playgroud)
这样你在base_layout中仍然只有一个ViewStub,你可以在充气之前在代码中设置它.
| 归档时间: |
|
| 查看次数: |
7409 次 |
| 最近记录: |