ActionBar和ViewPager结合实现内容切换

1.首先要写好布局文件,一个是包含viewPager的,其它的用来显示ViewPager中的内容,在最初实验期间可以简单放一个文本就行

包含viewPager的布局文件

       ......
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </android.support.v4.view.ViewPager>

2.写class文件加载ViewPager的内容,这里给出一个示例:

 public class Fragment1 extends Fragment {  
 
    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {  
        return findView(inflater, container, bundle, R.layout.fragment1);      
    }  
      
    private View findView(LayoutInflater inflater, ViewGroup container,   
            Bundle bundle, int layoutResourceId) {  
        View layout = inflater.inflate(layoutResourceId, container, false);  
        return layout;  
    }   

3.在主方法中实现ActionBar和ViewPager的交互

public class MainActivity1 extends FragmentActivity implements
ActionBar.TabListener, OnPageChangeListener {
// 定义显示的页面
private Fragment1 mFragment1 = new Fragment1();
private Fragment2 mFragment2 = new Fragment2();
private Fragment3 mFragment3 = new Fragment3();
// 显示页面的个数
private static final int TAB_INDEX_COUNT = 3;
private static final int TAB_INDEX_ONE = 0;
private static final int TAB_INDEX_TWO = 1;
private static final int TAB_INDEX_THREE = 2;
private ViewPager mViewPager;
private ViewPagerAdapter mViewPagerAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpActionBar();
setUpViewPager();
setUpTabs();
}

private void setUpActionBar() {
final ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(false);//
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);// 设置为导航模式
actionBar.setDisplayShowTitleEnabled(false);// 设置不显示title
actionBar.setDisplayShowHomeEnabled(false);//
}

private void setUpViewPager() {
mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());


mViewPager = (ViewPager) findViewById(R.id.pager);// 获得ViewPager组件
mViewPager.setAdapter(mViewPagerAdapter);
mViewPager.setOnPageChangeListener(this);
}

private void setUpTabs() {
final ActionBar actionBar = getActionBar();
for (int i = 0; i < mViewPagerAdapter.getCount(); ++i) {
actionBar.addTab(actionBar.newTab()
.setText(mViewPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
}

@Override
protected void onDestroy() {
super.onDestroy();
}

public class ViewPagerAdapter extends FragmentPagerAdapter {

public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
switch (position) {
case TAB_INDEX_ONE:
return mFragment1;
case TAB_INDEX_TWO:
return mFragment2;
case TAB_INDEX_THREE:
return mFragment3;
}
throw new IllegalStateException("No fragment at position "
+ position);
}

@Override
public int getCount() {
return TAB_INDEX_COUNT;
}

/** ViewPager页面滑动,ActionBar显示相应内容 */
public CharSequence getPageTitle(int position) {
String tabLabel = null;
switch (position) {
case TAB_INDEX_ONE:
tabLabel = getString(R.string.tab_1);
break;
case TAB_INDEX_TWO:
tabLabel = getString(R.string.tab_2);
break;
case TAB_INDEX_THREE:
tabLabel = getString(R.string.tab_3);
break;

}
return tabLabel;
}
}

/** ViewPager页面状态发生改变时执行此方法 */
public void onPageScrollStateChanged(int state) {
switch (state) {
case ViewPager.SCROLL_STATE_IDLE:// 未拖动页面时执行
break;
case ViewPager.SCROLL_STATE_DRAGGING:// 正在拖动页面时执行
break;
case ViewPager.SCROLL_STATE_SETTLING:

break;
default:
break;
}

}

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

/** 当页面被选中时执行此方法 */
public void onPageSelected(int position) {
final ActionBar actionBar = getActionBar();
actionBar.setSelectedNavigationItem(position);
}
/** 当点击ActionBar时跳转到相应的页面 */
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
mViewPager.setCurrentItem(tab.getPosition());
}

public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {

}

public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {

}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值