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;
}
}
} 现在TAB用得比较少了吧。 我们的项目还在使用这个的,楼上的主要使用什么来实现tab的功能呢
页:
[1]