zoukankan      html  css  js  c++  java
  • FragmentTabHost+ViewPager实现底部按钮

      1 package com.example.fragmenttabdemo;
      2 
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 
      6 import android.annotation.SuppressLint;
      7 import android.os.Bundle;
      8 import android.support.v4.app.Fragment;
      9 import android.support.v4.app.FragmentActivity;
     10 import android.support.v4.app.FragmentManager;
     11 import android.support.v4.app.FragmentPagerAdapter;
     12 import android.support.v4.app.FragmentTabHost;
     13 import android.support.v4.view.ViewPager;
     14 import android.support.v4.view.ViewPager.OnPageChangeListener;
     15 import android.view.LayoutInflater;
     16 import android.view.View;
     17 import android.view.ViewGroup;
     18 import android.widget.ImageView;
     19 import android.widget.TabHost.OnTabChangeListener;
     20 import android.widget.TabHost.TabSpec;
     21 import android.widget.TabWidget;
     22 import android.widget.TextView;
     23 
     24 @SuppressLint("InflateParams")
     25 public class MainActivity extends FragmentActivity {
     26     // 定义FragmentTabHost对象
     27     private FragmentTabHost mTabHost;
     28     // 定义一个布局
     29     private LayoutInflater layoutInflater;
     30     // 定义数组来存放Fragment界面
     31     @SuppressWarnings("rawtypes")
     32     private Class fragmentArray[] = { FragmentPage1.class, FragmentPage1.class,
     33             FragmentPage1.class, FragmentPage1.class, FragmentPage1.class };
     34     // 定义数组来存放按钮图片
     35     private int mImageViewArray[] = { R.drawable.ic_launcher,
     36             R.drawable.ic_launcher, R.drawable.ic_launcher,
     37             R.drawable.ic_launcher, R.drawable.ic_launcher };
     38     // Tab选项卡的文字
     39     private String mTextviewArray[] = { "首页", "消息", "好友", "广场", "更多" };
     40     private ViewPager vp;
     41     private List<Fragment> list = new ArrayList<Fragment>();
     42 
     43     public void onCreate(Bundle savedInstanceState) {
     44         super.onCreate(savedInstanceState);
     45         setContentView(R.layout.activity_main);
     46         initView();
     47         initPager();
     48     }
     49 
     50     /**
     51      * 初始化组件
     52      */
     53     private void initView() {
     54         vp = (ViewPager) findViewById(R.id.pager);
     55         vp.setOnPageChangeListener(new ViewPagerListener());
     56         // MyAdapter adapter = new MyAdapter();
     57         // vp.setAdapter(adapter);
     58         // 实例化布局对象
     59         layoutInflater = LayoutInflater.from(this);
     60         // 实例化TabHost对象,得到TabHost
     61         mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
     62         // 得到对象后,初始化
     63         // mTabHost.getTabWidget().setDividerDrawable(android.R.color.transparent);
     64         mTabHost.setup(this, getSupportFragmentManager(), R.id.pager);
     65         mTabHost.setOnTabChangedListener(new TabHostListener());
     66         // 得到fragment的个数
     67         int count = fragmentArray.length;
     68 
     69         for (int i = 0; i < count; i++) {
     70             // 为每一个Tab按钮设置图标、文字和内容
     71             TabSpec tabSpec = mTabHost.newTabSpec(mTextviewArray[i])
     72                     .setIndicator(getTabItemView(i));
     73             // 将Tab按钮添加进Tab选项卡中
     74             mTabHost.addTab(tabSpec, fragmentArray[i], null);
     75             mTabHost.setTag(i);
     76             mTabHost.getTabWidget().setDividerDrawable(
     77                     android.R.color.transparent);
     78             // 设置Tab按钮的背景
     79             // mTabHost.getTabWidget().getChildAt(i)
     80             // .setBackgroundResource(R.drawable.selector_tab_background);
     81         }
     82     }
     83 
     84     //初始化viewpager
     85     private void initPager() {
     86         FragmentPage1 p1 = new FragmentPage1();
     87         FragmentPage1 p2 = new FragmentPage1();
     88         FragmentPage1 p3 = new FragmentPage1();
     89         FragmentPage1 p4 = new FragmentPage1();
     90         FragmentPage1 p5 = new FragmentPage1();
     91         list.add(p1);
     92         list.add(p2);
     93         list.add(p3);
     94         list.add(p4);
     95         list.add(p5);
     96         vp.setAdapter(new MyAdapter(getSupportFragmentManager()));
     97     }
     98 
     99     /**
    100      * 给Tab按钮设置图标和文字
    101      */
    102     private View getTabItemView(int index) {
    103         View view = layoutInflater.inflate(R.layout.btn_bottom, null);
    104         ImageView imageView = (ImageView) view.findViewById(R.id.imageview);
    105         imageView.setImageResource(mImageViewArray[index]);
    106         TextView textView = (TextView) view.findViewById(R.id.textview);
    107         textView.setText(mTextviewArray[index]);
    108         return view;
    109     }
    110 
    111     private class TabHostListener implements OnTabChangeListener {
    112         @Override
    113         public void onTabChanged(String tabId) {
    114             int position = mTabHost.getCurrentTab();
    115             vp.setCurrentItem(position);
    116         }
    117     }
    118 
    119     class MyAdapter extends FragmentPagerAdapter {
    120 
    121         public MyAdapter(FragmentManager fm) {
    122             super(fm);
    123             // TODO Auto-generated constructor stub
    124         }
    125 
    126         @Override
    127         public Fragment getItem(int arg0) {
    128             return list.get(arg0);
    129         }
    130 
    131         @Override
    132         public int getCount() {
    133             return list.size();
    134         }
    135 
    136     }
    137 
    138     class ViewPagerListener implements OnPageChangeListener {
    139 
    140         public void onPageScrollStateChanged(int arg0) {
    141 
    142         }
    143 
    144         public void onPageScrolled(int arg0, float arg1, int arg2) {
    145 
    146         }
    147 
    148         public void onPageSelected(int index) {
    149             TabWidget widget = mTabHost.getTabWidget();
    150             int oldFocusability = widget.getDescendantFocusability();
    151             widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
    152             mTabHost.setCurrentTab(index);
    153             widget.setDescendantFocusability(oldFocusability);
    154         }
    155     }
    156 }
  • 相关阅读:
    Math app 2.0
    “口袋精灵”单元测试
    学习进度条
    本学期总结
    sprint2的总结及团队贡献分
    点餐系统Sprint1总结
    实验8
    实验7
    实验6
    实验五
  • 原文地址:https://www.cnblogs.com/jinglecode/p/4348328.html
Copyright © 2011-2022 走看看