R-B 发表于 2015-07-06 14:28

Android设备TAB切换(可滑动切换)

Android设备上的TAB切换,在之前的博客上已经做的点总结,
这里主要介绍下功能相对复杂的可滑动的TAB切换(Viewpager+Fragment实现);
废话不多说了上代码:

顺便把Tabhost和RadioGroup这两种实现方式也上传;
这是PageAdapter的内容package com.example.demotab;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class MainPageAdapter extends FragmentPagerAdapter {

    private List<Fragment> fragments;

    public MainPageAdapter(FragmentManager fm) {
      super(fm);
      // TODO Auto-generated constructor stub
    }

    public MainPageAdapter(FragmentManager fm, List<Fragment> fragments) {
      super(fm);
      // TODO Auto-generated constructor stub
      this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int arg0) {
      // TODO Auto-generated method stub
      return fragments.get(arg0);
    }

    @Override
    public int getCount() {
      // TODO Auto-generated method stub
      return fragments.size();
    }

}在Activity中适配package com.example.demotab;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class MainActivity extends FragmentActivity implements
      OnPageChangeListener, OnCheckedChangeListener {

    private ViewPager pager;
    private MainPageAdapter adapter;
    private List<Fragment> fragments;
    private RadioGroup group;
    private RadioButton button0, button1, button2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      fragments = new ArrayList<Fragment>();
      fragments.add(new Fragment_A());
      fragments.add(new Fragment_B());
      fragments.add(new Fragment_C());

      pager = (ViewPager) findViewById(R.id.pager);
      adapter = new MainPageAdapter(getSupportFragmentManager(), fragments);
      pager.setAdapter(adapter);
      pager.setOffscreenPageLimit(fragments.size() - 1);// 缓存页面,显示第一个缓存最后一个
      pager.setOnPageChangeListener(this);

      group = (RadioGroup) findViewById(R.id.radioGroup1);
      button0 = (RadioButton) findViewById(R.id.radio0);
      button1 = (RadioButton) findViewById(R.id.radio1);
      button2 = (RadioButton) findViewById(R.id.radio2);
      group.setOnCheckedChangeListener(this);
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
      // TODO Auto-generated method stub
      Log.v("asdf", "onPageScrollStateChanged");
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
      // TODO Auto-generated method stub
      // Log.v("asdf", "onPageScrolled");
    }

    @Override
    public void onPageSelected(int arg0) {
      // TODO Auto-generated method stub
      Log.v("asdf", "onPageSelected");
      getTabState(arg0);

    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
      // TODO Auto-generated method stub
      switch (checkedId) {
      case R.id.radio0:
            pager.setCurrentItem(0);
            break;
      case R.id.radio1:
            pager.setCurrentItem(1);
            break;
      case R.id.radio2:
            pager.setCurrentItem(2);
            break;
      default:
            break;
      }
    }

    private void getTabState(int index) {
      // TODO Auto-generated method stub
      button0.setChecked(false);
      button1.setChecked(false);
      button2.setChecked(false);

      switch (index) {
      case 0:
            button0.setChecked(true);
            break;
      case 1:
            button1.setChecked(true);
            break;
      case 2:
            button2.setChecked(true);
            break;
      default:
            break;
      }

    }

}

renxiao2003 发表于 2015-07-11 20:56

现在TAB用得比较少了吧。

baopbird2005 发表于 2015-07-14 10:16

我们的项目还在使用这个的,楼上的主要使用什么来实现tab的功能呢
页: [1]
查看完整版本: Android设备TAB切换(可滑动切换)