一个fragment tabhost的简单demo 可在此基础上进行修改,直接来代码
创建4个fragment并设置background
MainActivity.class
public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private FragmentTabHost fragmentTabHost; private List<Fragment> fragmentList; private Class aClass[] = {Fragment1.class,Fragment2.class,Fragment3.class,Fragment4.class}; private Fragment fragment[] = {new Fragment1(),new Fragment2(),new Fragment3(),new Fragment4()}; private String titles[] = {"1","2","3","4"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fragmentTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); viewPager = (ViewPager) findViewById(R.id.view_pager); fragmentList = new ArrayList<Fragment>(); fragmentTabHost.setup(this,getSupportFragmentManager(),android.R.id.tabcontent); fragmentTabHost.getTabWidget().setDividerDrawable(null); for(int i=0;i<fragment.length;i++){ TabHost.TabSpec tabSpec = fragmentTabHost.newTabSpec(titles[i]).setIndicator(getTabView(i)); fragmentTabHost.addTab(tabSpec,aClass[i],null); fragmentList.add(fragment[i]); fragmentTabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.WHITE); } viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } }); fragmentTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { @Override public void onTabChanged(String s) { viewPager.setCurrentItem(fragmentTabHost.getCurrentTab()); } }); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { fragmentTabHost.setCurrentTab(position); } @Override public void onPageScrollStateChanged(int state) { } }); } private View getTabView(int index) { View view = LayoutInflater.from(this).inflate(R.layout.tab_item, null); TextView title = (TextView) view.findViewById(R.id.title); title.setText(titles[index]); return view; } }
tab_title_color.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/titleColor" android:state_selected="false"/> <item android:color="@color/titleColorSelected" android:state_selected="true"/> </selector>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.app.FragmentTabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"> </TabWidget> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0"> </FrameLayout> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </android.support.v4.view.ViewPager> </LinearLayout> </android.support.v4.app.FragmentTabHost> </RelativeLayout>