一:布局
<?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/center_body_view_pagers" android:layout_width="fill_parent" android:layout_height="wrap_content" > </android.support.v4.view.ViewPager> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- 隐藏的TabWidget,visibility="gone" --> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone" /> <!-- 标签内容 --> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" /> <RelativeLayout android:id="@+id/relative_bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="fill_horizontal" > <RadioGroup android:id="@+id/tab_group" android:layout_width="fill_parent" android:layout_height="60dip" android:background="@drawable/list_bottombar_bg" android:gravity="bottom|center_horizontal" android:orientation="horizontal" > <RadioButton android:id="@+id/local" android:layout_width="105dip" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:background="@drawable/local_bottom" android:button="@null" android:clickable="true" android:focusable="true" > </RadioButton> <RadioButton android:id="@+id/online" android:layout_width="105dip" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:background="@drawable/net_buttom" android:button="@null" /> </RadioGroup> </RelativeLayout> </LinearLayout> </TabHost>
二:activity
package com.ct.app.qqmusicplayer; import java.util.ArrayList; import java.util.List; import android.app.LocalActivityManager; import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.View; import android.view.ViewGroup; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.TabHost; public class TabHostMainActivity extends TabActivity implements OnCheckedChangeListener{ TabHost tabhost; private RadioGroup maintab; // 页卡内容 private ViewPager mPager; // Tab页面列表 private List<View> listViews; // 当前页卡编号 private LocalActivityManager manager = null; private MyPagerAdapter mpAdapter = null; int index; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tabhost_list); maintab = (RadioGroup) findViewById(R.id.tab_group); maintab.setOnCheckedChangeListener(this);// 设置RadioGroup监听器 tabhost = getTabHost(); mPager = (ViewPager) findViewById(R.id.center_body_view_pagers); manager = new LocalActivityManager(this, true); manager.dispatchCreate(savedInstanceState); InitViewPager(); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.local: index=0; //tabhost.setCurrentTabByTag("localmusic"); listViews.set(0, getView("A", new Intent(TabHostMainActivity.this, MusicListActivity.class))); mpAdapter.notifyDataSetChanged(); mPager.setCurrentItem(0); break; case R.id.online: index=1; //tabhost.setCurrentTabByTag("netmusic"); listViews.set(1, getView("B", new Intent(TabHostMainActivity.this, MusicOnlineActivity.class))); mpAdapter.notifyDataSetChanged(); mPager.setCurrentItem(1); break; } } /***初始化滑动**/ private void InitViewPager() { Intent intent = null; listViews = new ArrayList<View>(); mpAdapter = new MyPagerAdapter(listViews); intent = new Intent(TabHostMainActivity.this, MusicListActivity.class); listViews.add(getView("A", intent)); intent = new Intent(TabHostMainActivity.this, MusicOnlineActivity.class); listViews.add(getView("B", intent)); mPager.setOffscreenPageLimit(0); mPager.setAdapter(mpAdapter); mPager.setCurrentItem(0); mPager.setOnPageChangeListener(new MyOnPageChangeListener()); } public class MyPagerAdapter extends PagerAdapter{ public List<View> mListViews; public MyPagerAdapter(List<View> mListViews) { this.mListViews = mListViews; } @Override public int getCount() { return mListViews.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == (arg1); } @Override public void destroyItem(ViewGroup container, int position, Object object) { ((ViewPager) container).removeView(mListViews.get(position)); } @Override public void finishUpdate(ViewGroup container) { } @Override public Object instantiateItem(ViewGroup container, int position) { ((ViewPager) container).addView(mListViews.get(position), 0); return mListViews.get(position); } @Override public Parcelable saveState() { return null; } @Override public void startUpdate(ViewGroup container) { } } public class MyOnPageChangeListener implements OnPageChangeListener { @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int pos) { manager.dispatchResume(); switch (pos) { case 0: index = 0; maintab.check(R.id.local); listViews.set(0, getView("A", new Intent(TabHostMainActivity.this, MusicListActivity.class))); mpAdapter.notifyDataSetChanged(); break; case 1: index=1; maintab.check(R.id.online); listViews.set(1, getView("B", new Intent(TabHostMainActivity.this, MusicOnlineActivity.class))); mpAdapter.notifyDataSetChanged(); mPager.setCurrentItem(1); break; } } } private View getView(String id, Intent intent) { return manager.startActivity(id, intent).getDecorView(); } }
(在:F:\java\TabHost和Viewpaper的结合使用)