今天发的是TabHost结合ViewPager实现首页底部导航的效果,虽然说网上有很多这样的Demo,不过呢,我还是要把自己练习写的发出来,没错!就是这么任性; 
先上效果图,如下:

代码里面有注释,就不过多解释了,说几点需要注意的问题 
1:TabHost 、TabWidget、FrameLayout一定添加id这个属性,否则会报错 
android:id=”@android:id/tabhost” 
android:id=”@android:id/tabcontent” 
android:id=”@android:id/tabs” 
这个属性是固定的。 
2:ViewPager的适配器要继承PagerAdapter,别整错咯; 
布局文件xml:

 1 <?xml version="1.0" encoding="utf-8"?> 2  8  9     13 14         19 20             24 25         26 27         33 34         38 39         45 46             55 56             64 65             73 74             82         83     84 

Activity:

  1 package com.example.wgh.tabhostwithviewpager;  2   3 import android.app.TabActivity;  4 import android.os.Bundle;  5 import android.support.v4.view.ViewPager;  6 import android.view.LayoutInflater;  7 import android.view.View;  8 import android.widget.RadioButton;  9 import android.widget.RadioGroup; 10 import android.widget.TabHost; 11  12 import java.util.ArrayList; 13  14 public class MainActivity extends TabActivity { 15  16     private TabHost tabHost = null; 17     private ViewPager viewPager = null; 18     private RadioGroup radioGroup = null; 19     private ArrayList list = null; 20     private View view1 = null; 21     private View view2 = null; 22     private View view3 = null; 23     private View view4 = null; 24     private RadioButton radioButton1 = null; 25     private RadioButton radioButton2 = null; 26     private RadioButton radioButton3 = null; 27     private RadioButton radioButton4 = null; 28  29     @Override 30     protected void onCreate(Bundle savedInstanceState) { 31         super.onCreate(savedInstanceState); 32         setContentView(R.layout.activity_main); 33         initView(); 34         initData(); 35  36         //设置初始化默认选项 37         radioGroup.check(R.id.radioButton1); 38         radioButton1.setBackgroundResource(R.drawable.img_draw_money_success); 39         viewPager.setCurrentItem(0); 40         tabHost.setCurrentTab(0); 41  42         //getViewPager添加适配器 43         MyAdapter adapter = new MyAdapter(list); 44         viewPager.setAdapter(adapter); 45  46     /** 47      * viewPager设置滑动监听,根据viewPager选中页的position,设置tabHost页卡选项的样式 48      */ 49  50         viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 51             @Override 52             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 53             } 54  55             @Override 56             public void onPageSelected(int position) { 57                 if (position == 0){ 58                     radioButton1.setBackgroundResource(R.drawable.img_draw_money_success); 59                     radioButton2.setBackgroundResource(R.drawable.img_draw_money_fail); 60                     radioButton3.setBackgroundResource(R.drawable.img_draw_money_fail); 61                     radioButton4.setBackgroundResource(R.drawable.img_draw_money_fail); 62                 }else if(position == 1){ 63                     radioButton1.setBackgroundResource(R.drawable.img_draw_money_fail); 64                     radioButton2.setBackgroundResource(R.drawable.img_draw_money_success); 65                     radioButton3.setBackgroundResource(R.drawable.img_draw_money_fail); 66                     radioButton4.setBackgroundResource(R.drawable.img_draw_money_fail); 67                 }else if(position == 2){ 68                     radioButton1.setBackgroundResource(R.drawable.img_draw_money_fail); 69                     radioButton2.setBackgroundResource(R.drawable.img_draw_money_fail); 70                     radioButton3.setBackgroundResource(R.drawable.img_draw_money_success); 71                     radioButton4.setBackgroundResource(R.drawable.img_draw_money_fail); 72                 }else if(position == 3){ 73                     radioButton1.setBackgroundResource(R.drawable.img_draw_money_fail); 74                     radioButton2.setBackgroundResource(R.drawable.img_draw_money_fail); 75                     radioButton3.setBackgroundResource(R.drawable.img_draw_money_fail); 76                     radioButton4.setBackgroundResource(R.drawable.img_draw_money_success); 77                 } 78             } 79  80             @Override 81             public void onPageScrollStateChanged(int state) { 82             } 83         }); 84  85     /** 86      * 给radioGroup设置监听,以此来改变ViewPager的页面 87      */ 88         radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 89             @Override 90             public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { 91                 switch (checkedId){ 92                     case R.id.radioButton1: 93                         viewPager.setCurrentItem(0); 94                         radioButton1.setBackgroundResource(R.drawable.img_draw_money_success); 95                         radioButton2.setBackgroundResource(R.drawable.img_draw_money_fail); 96                         radioButton3.setBackgroundResource(R.drawable.img_draw_money_fail); 97                         radioButton4.setBackgroundResource(R.drawable.img_draw_money_fail); 98                         break; 99                     case R.id.radioButton2:100                         viewPager.setCurrentItem(1);101                         radioButton1.setBackgroundResource(R.drawable.img_draw_money_fail);102                         radioButton2.setBackgroundResource(R.drawable.img_draw_money_success);103                         radioButton3.setBackgroundResource(R.drawable.img_draw_money_fail);104                         radioButton4.setBackgroundResource(R.drawable.img_draw_money_fail);105                         break;106                     case R.id.radioButton3:107                         viewPager.setCurrentItem(2);108                         radioButton1.setBackgroundResource(R.drawable.img_draw_money_fail);109                         radioButton2.setBackgroundResource(R.drawable.img_draw_money_fail);110                         radioButton3.setBackgroundResource(R.drawable.img_draw_money_success);111                         radioButton4.setBackgroundResource(R.drawable.img_draw_money_fail);112                         break;113                     case R.id.radioButton4:114                         viewPager.setCurrentItem(3);115                         radioButton1.setBackgroundResource(R.drawable.img_draw_money_fail);116                         radioButton2.setBackgroundResource(R.drawable.img_draw_money_fail);117                         radioButton3.setBackgroundResource(R.drawable.img_draw_money_fail);118                         radioButton4.setBackgroundResource(R.drawable.img_draw_money_success);119                         break;120                 }121             }122         });123     }124 125     /**126      * 初始化数据源127      */128     private void initData() {129         list = new ArrayList();130         list.add(view1);131         list.add(view2);132         list.add(view3);133         list.add(view4);134     }135 136      /**137      * 初始化控件138      */139     private void initView() {140         tabHost = getTabHost();141 142         viewPager = (ViewPager) findViewById(R.id.viewPager);143         radioGroup = (RadioGroup) findViewById(R.id.radioGroup);144         radioButton1 = (RadioButton) findViewById(R.id.radioButton1);145         radioButton2 = (RadioButton) findViewById(R.id.radioButton2);146         radioButton3 = (RadioButton) findViewById(R.id.radioButton3);147         radioButton4 = (RadioButton) findViewById(R.id.radioButton4);148      /**149      * 将每页要展示的layout实例出来,添加到list里面,最后通过适配器return回来要展示的相应的layout150      */151         LayoutInflater inflater = LayoutInflater.from(this);152         view1 = inflater.inflate(R.layout.layout_one,null);153         view2 = inflater.inflate(R.layout.layout_two,null);154         view3 = inflater.inflate(R.layout.layout_three,null);155         view4 = inflater.inflate(R.layout.layout_four,null);156     }157 158 }

ViewPager适配器MyAdapter:

 1 public class MyAdapter extends PagerAdapter { 2     private ArrayList list = null; 3  4     public MyAdapter(ArrayList list) { 5         this.list = list; 6     } 7  8     @Override 9     public int getCount() {10         return list.size();11     }12 13     @Override14     public boolean isViewFromObject(View arg0, Object arg1) {15         return arg0 == arg1;16     }17 18     @Override19     public Object instantiateItem(ViewGroup container, int position) {20         container.addView(list.get(position));21         return list.get(position);22     }23     @Override24     public void destroyItem(ViewGroup container, int position, Object object) {25 26         container.removeView(list.get(position));27 28     }29 }

如果有什么问题,欢迎留言!


更多相关文章

  1. 设置Android设备按Power按键不休眠
  2. Android开发学习笔记:TextView的属性详解
  3. Android传感器、语音识别、定位系统、Google Map API、快捷方式
  4. Cordova插件调用Android原生Activity修改其样式及背景
  5. Android(安卓)Studio中Xml的新建及shape绘图
  6. Android(安卓)ListView理解
  7. Android(安卓)中LayoutInflater(布局加载器)源码篇之createViewFro
  8. 解决TextView设置跑马灯但却没有效果
  9. Android网络编程之WebKit应用

随机推荐

  1. SQL2000 事务回滚问题探讨
  2. 关于PowerDesigner初体验的使用介绍
  3. 基于存储过程的详细介绍
  4. sql动态行转列的两种方法
  5. SQL中的ISNULL函数使用介绍
  6. 关于sql server批量插入和更新的两种解决
  7. 基于Sql Server通用分页存储过程的解决方
  8. 关于SQL 存储过程入门基础(基础知识)
  9. 关于SQL 存储过程入门基础(变量)
  10. 关于SQL 存储过程入门基础(流程控制)