Android(安卓)TabHost的使用(二)
16lz
2021-01-24
2. TabHost绑定动态View(从2个Layout中取数据)
(1)效果图
(2)代码
1)tab_map.xml
[xhtml] view plain copy- <?xmlversion="1.0"encoding="utf-8"?>
- <FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:id="@+id/tab_map_id"
- >
- </FrameLayout>
2)tab_hs.xml
[xhtml] view plain copy- <?xmlversion="1.0"encoding="utf-8"?>
- <FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:id="@+id/tab_hs_id"
- >
- <TextViewandroid:id="@+id/tab_hs_tv"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- />
- </FrameLayout>
3)MapView.java
[java] view plain copy- publicclassMapViewextendsView{
- publicMapView(Contextcontext){
- super(context);
- }
- protectedvoidonDraw(Canvascanvas){
- Paintp=newPaint();
- canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.icon),0,0,p);
- }
- }
4)TabDemo.java
[java] view plain copy- publicclassTabDemoextendsTabActivity{
- privateTabHosttabHost;
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- tabHost=getTabHost();
- createTabSpec_map();
- createTabSpec_hs();
- setContentView(tabHost);
- }
- privatevoidcreateTabSpec_map(){
- LayoutInflaterinflater_tab1=LayoutInflater.from(this);
- inflater_tab1.inflate(R.layout.tab_map,tabHost.getTabContentView());
- /*
- *R.layout.tab_demo已被LayoutInflater注册,所以这个可以通过findViewById获得其对象
- */
- FrameLayoutframeLayout=(FrameLayout)findViewById(R.id.tab_map_id);
- MapViewmv=newMapView(this);
- frameLayout.addView(mv);
- TabHost.TabSpectabSpec_map=tabHost.newTabSpec("mapview");
- tabSpec_map.setIndicator("mapview",null);
- tabSpec_map.setContent(R.id.tab_map_id);//动态绑定基于图片的View(通过一个Layout绑定)
- tabHost.addTab(tabSpec_map);
- }
- privatevoidcreateTabSpec_hs(){
- LayoutInflaterinflater_tab2=LayoutInflater.from(this);
- inflater_tab2.inflate(R.layout.tab_hs,tabHost.getTabContentView());
- TabHost.TabSpectabSpec_hs=tabHost.newTabSpec("hsview");
- tabSpec_hs.setIndicator("hsview");
- tabSpec_hs.setContent(R.id.tab_hs_id);//绑定一个新的Layout
- tabHost.addTab(tabSpec_hs);
- /*
- *这个绑定View的操作必须要重新使用一个新方法来完成,因为Tab的生成是在onCreate()中完成的,onCreate()只被调用一次,
- *但是数据更新操作是需要反复进行的,如果反复调用createTabSpec_hs()则会生成多个tab页,这是我们不希望的,所以单独把
- *updata分离出来,数据更新时单独调用此方法就可以了。
- */
- updateTabSpec_hs();
- }
- privatevoidupdateTabSpec_hs(){
- TextViewtv=(TextView)findViewById(R.id.tab_hs_tv);
- tv.setText("Thisistab2");
- }
- }
更多相关文章
- Android(安卓)中GridView上图下字、GridView显示文字
- android 定时熄屏
- Android基于Intent实现Activity之间数据传递的方法
- Android(安卓)Intent Action 大全
- 使用ContentProvider管理照片
- android下实现程序不操作一段时间,执行另一个程序
- Android(安卓)简单的照相机程序
- Android(安卓)DataBinding 基础使用
- Android中XML的基本操作(增、删、改、查)