几种tabhost的总结(1)
一,利用tabwidget切换的
效果如图
一。布局 main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@android:color/white" > <TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="2dip"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.0" android:background="@drawable/bg_tab" android:paddingLeft="15dip" android:paddingRight="15dip" android:paddingBottom="2dip"/> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.0" android:gravity="center" android:fadingEdge="none"></FrameLayout> </LinearLayout> </TabHost> </LinearLayout>
二。MainActivity
package com.ct.tab; import java.util.ArrayList; import java.util.List; import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ImageButton; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; import android.widget.TabWidget; public class MainActivity extends TabActivity implements OnTabChangeListener { /** Called when the activity is first created. */ /** * 主界面的tabhost */ private TabHost mTabHost; /** * tab页的TabWidget */ private TabWidget mTabWidget; /** * 用来保存菜单中子view的容器 */ List<View> list = new ArrayList<View>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initView(); } private void initView(){ mTabHost = (TabHost) findViewById(android.R.id.tabhost); mTabWidget = (TabWidget) findViewById(android.R.id.tabs); mTabHost.setOnTabChangedListener(this); setIndicators(); } private void setIndicators(){ //好友列表 setIndicator(R.drawable.icon_buddy_on, 0, new Intent( this, BuddyListActivity.class)); //群 setIndicator(R.drawable.icon_group, 1, new Intent(this, GroupChatActivity.class)); //最近会话 setIndicator(R.drawable.icon_recent, 2, new Intent(this, RecentTalkActivity.class)); //消息推送 setIndicator(R.drawable.icon_new, 3, new Intent(this, NewFuncActivity.class)); } private void setIndicator(int icon,int tabId,Intent intent){ ImageButton imageButton = new ImageButton(this.mTabHost.getContext()); imageButton.setImageResource(icon); if(tabId == 0){ imageButton.setBackgroundResource(R.drawable.bg_selected); }else { imageButton.setBackgroundResource(0); } String str = String.valueOf(tabId); TabHost.TabSpec localTabSpec = mTabHost.newTabSpec(str).setIndicator( imageButton).setContent(intent); //加载tabSpec mTabHost.addTab(localTabSpec); //保存tab菜单中子菜单 list.add(imageButton); } @Override public void onTabChanged(String tabId) { // TODO Auto-generated method stub int tabID = Integer.valueOf(tabId); // TODO Auto-generated method stub for (int i = 0; i < mTabWidget.getChildCount(); i++) { if (i == tabID) { Log.i("", "" + mTabWidget.getChildAt(Integer.valueOf(i))); if (list.size() != 0) { if (i == 0) { ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_buddy_on); ((ImageButton)list.get(i)).setBackgroundResource(R.drawable.bg_selected); } else if (i == 1) { ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_group_on); ((ImageButton)list.get(i)).setBackgroundResource(R.drawable.bg_selected); } else if (i == 2) { ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_recent_on); ((ImageButton)list.get(i)).setBackgroundResource(R.drawable.bg_selected); } else if (i == 3) { ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_new_on); ((ImageButton)list.get(i)).setBackgroundResource(R.drawable.bg_selected); } } } else { mTabWidget.getChildAt(Integer.valueOf(i)) .setBackgroundDrawable(null); if (list.size() != 0) { if (i == 0 && i != tabID) { ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_buddy); ((ImageButton)list.get(i)).setBackgroundResource(0); } else if (i == 1 && i != tabID) { ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_group); ((ImageButton)list.get(i)).setBackgroundResource(0); } else if (i == 2 && i != tabID) { ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_recent); ((ImageButton)list.get(i)).setBackgroundResource(0); } else if (i == 3 && i != tabID) { ((ImageButton)list.get(i)).setImageResource(R.drawable.icon_new); ((ImageButton)list.get(i)).setBackgroundResource(0); } } } } } }
(在F:\java\MyTabHost1)