如果android有类似于ASP.Net中的masterpages,或者{{>在meteor的IronRouter中使用yield}}模板。
基本上我想要的是能够定义模板并指定xml构造中的内容。
想象一下像控件这样的简单卡片,其中的内容是在设计时在xml中指定的。
也许将控件定义为:
<myCardControl>
<layout>
<text />
<content />
<button />
</layout>
</myCardControl>
然后在其他布局中使用它,如组件:
<layout>
<myCardControl>
<image />
</myCardControl>
<myCardControl>
<image />
</myCardControl>
<myCardControl>
<layout>
<text>...or other controls etc.
</layout>
</myCardControl>
</layout>
如果有人能够理解我的意思,你能否指出我正确的方向。我是Android开发人员的新手,并且正在研究最好的做事方式。我环顾四周但却找不到答案。
答案 0 :(得分:0)
这些概念不像Android中的ASP.net Masterpages。但你可以创造这样的东西。
您可以创建一个Activity
作为模板。所有内容(正在改变的部分)都在Fragment
内。将此片段加载到Activity
。
activity_main.xml中
<LinearLayout>
<common views />
<FrameLayout
android:id="@+id/container"
.... />
</LinearLayout>
要在Fragment
container
内执行FrameLayout
操作(添加,替换,删除),请使用以下代码。
// get fragment manager
FragmentManager fm = getFragmentManager();
// add
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.your_placehodler, new YourFragment());
// alternatively add it with a tag
// trx.add(R.id.your_placehodler, new YourFragment(), "detail");
ft.commit();
// replace
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.your_placehodler, new YourFragment());
ft.commit();
// remove
Fragment fragment = fm.findFragmentById(R.id.your_placehodler);
FragmentTransaction ft = fm.beginTransaction();
ft.remove(fragment);
ft.commit();
要在这些Fragment
中重复元素,您可以创建xml
文件并使用include
标记来包含此布局。
例如,
创建一个通用的xml。
common.xml
<LinearLayout>
<common views>
</LinearLayout>
您可以在代码中包含此布局,如下所示,
fragment1.xml
<LinearLayout>
<include
..
layout="@layout/common"/>
</LinearLayout>
fragment2.xml
<LinearLayout>
<include
..
layout="@layout/common"/>
</LinearLayout>
Fragment Tutorial
Include tag example
希望你能得到这个想法。祝你好运:)