2. TabHost绑定动态View(从2个Layout中取数据)

(1)效果图

(2)代码

1)tab_map.xml

[xhtml] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:id="@+id/tab_map_id"
  7. >
  8. </FrameLayout>

2)tab_hs.xml

[xhtml] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:id="@+id/tab_hs_id"
  7. >
  8. <TextViewandroid:id="@+id/tab_hs_tv"
  9. android:layout_width="fill_parent"
  10. android:layout_height="fill_parent"
  11. />
  12. </FrameLayout>

3)MapView.java

[java] view plain copy
  1. publicclassMapViewextendsView{
  2. publicMapView(Contextcontext){
  3. super(context);
  4. }
  5. protectedvoidonDraw(Canvascanvas){
  6. Paintp=newPaint();
  7. canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.icon),0,0,p);
  8. }
  9. }

4)TabDemo.java

[java] view plain copy
  1. publicclassTabDemoextendsTabActivity{
  2. privateTabHosttabHost;
  3. publicvoidonCreate(BundlesavedInstanceState){
  4. super.onCreate(savedInstanceState);
  5. tabHost=getTabHost();
  6. createTabSpec_map();
  7. createTabSpec_hs();
  8. setContentView(tabHost);
  9. }
  10. privatevoidcreateTabSpec_map(){
  11. LayoutInflaterinflater_tab1=LayoutInflater.from(this);
  12. inflater_tab1.inflate(R.layout.tab_map,tabHost.getTabContentView());
  13. /*
  14. *R.layout.tab_demo已被LayoutInflater注册,所以这个可以通过findViewById获得其对象
  15. */
  16. FrameLayoutframeLayout=(FrameLayout)findViewById(R.id.tab_map_id);
  17. MapViewmv=newMapView(this);
  18. frameLayout.addView(mv);
  19. TabHost.TabSpectabSpec_map=tabHost.newTabSpec("mapview");
  20. tabSpec_map.setIndicator("mapview",null);
  21. tabSpec_map.setContent(R.id.tab_map_id);//动态绑定基于图片的View(通过一个Layout绑定)
  22. tabHost.addTab(tabSpec_map);
  23. }
  24. privatevoidcreateTabSpec_hs(){
  25. LayoutInflaterinflater_tab2=LayoutInflater.from(this);
  26. inflater_tab2.inflate(R.layout.tab_hs,tabHost.getTabContentView());
  27. TabHost.TabSpectabSpec_hs=tabHost.newTabSpec("hsview");
  28. tabSpec_hs.setIndicator("hsview");
  29. tabSpec_hs.setContent(R.id.tab_hs_id);//绑定一个新的Layout
  30. tabHost.addTab(tabSpec_hs);
  31. /*
  32. *这个绑定View的操作必须要重新使用一个新方法来完成,因为Tab的生成是在onCreate()中完成的,onCreate()只被调用一次,
  33. *但是数据更新操作是需要反复进行的,如果反复调用createTabSpec_hs()则会生成多个tab页,这是我们不希望的,所以单独把
  34. *updata分离出来,数据更新时单独调用此方法就可以了。
  35. */
  36. updateTabSpec_hs();
  37. }
  38. privatevoidupdateTabSpec_hs(){
  39. TextViewtv=(TextView)findViewById(R.id.tab_hs_tv);
  40. tv.setText("Thisistab2");
  41. }
  42. }

更多相关文章

  1. Android(安卓)中GridView上图下字、GridView显示文字
  2. android 定时熄屏
  3. Android基于Intent实现Activity之间数据传递的方法
  4. Android(安卓)Intent Action 大全
  5. 使用ContentProvider管理照片
  6. android下实现程序不操作一段时间,执行另一个程序
  7. Android(安卓)简单的照相机程序
  8. Android(安卓)DataBinding 基础使用
  9. Android中XML的基本操作(增、删、改、查)

随机推荐

  1. Android点击通知栏消息,仅打开App,不跳转到
  2. android 将bitmap缓存到本地
  3. Android GeoPoint转Point
  4. Android入门进阶教程(14)-Binder进程通信
  5. 2011.10.10(2)——— android Clipping关于
  6. Android应用程序UI设计(1)_布局
  7. android创建自定义对话框
  8. ubuntu 下载 android 源码
  9. Android 获得可用摄像头id
  10. Android调用Webview中的js方法