您的位置:首页 > 移动开发 > Android开发

ActionBar与ViewPager结合实现“书签导航”

2017-02-17 16:24 501 查看
ActionBar与Pager结合实现“书签导航”首先看MainActivity:
public class MainActivity extends AppCompatActivity implements ActionBar.TabListener{
private ViewPager viewPager;
private List<Fragment> list;
private ActionBar bar;
private MyFragmentPagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewPager);
list = new ArrayList<>();
for(int i=0;i<3;i++){
//实例化Fragment,并向其传递数据
MyFragment myFragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putInt("type",i);
myFragment.setArguments(bundle);
list.add(myFragment);
}
adapter = new MyFragmentPagerAdapter(getSupportFragmentManager(),list);
viewPager.setAdapter(adapter);
//获得Activity的ActionBar
bar = getSupportActionBar();//注意:这里是v7包下的ActionBar
	//设定ActionBar的导航模式bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
	//向ActionBar中增加标签页bar.addTab(bar.newTab().setText("体育").setTabListener(this));bar.addTab(bar.newTab().setText("娱乐").setTabListener(this));bar.addTab(bar.newTab().setText("军事").setTabListener(this));viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {
		//让标签页与ViewPager联动bar.setSelectedNavigationItem(position);}@Overridepublic void onPageScrollStateChanged(int state) {}});}@Overridepublic void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
	//ViewPager与标签页联动viewPager.setCurrentItem(tab.getPosition());}@Overridepublic void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {}@Overridepublic void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {}}
MainActiviy的布局文件:其中只是放置了一个ViewPager
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight=[/b]"@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.shen.actionbar.MainActivity"><android.support.v4.view.ViewPagerandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/viewPager"/></RelativeLayout>
还有Fragment:
public class MyFragment extends Fragment {public MyFragment() {// Required empty public constructor}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment_my, container, false);TextView textView = (TextView) view.findViewById(R.id.tvText);
	//接收Activity传来的数据Bundle bundle = getArguments();int type = bundle.getInt("type");switch (type){case 0:textView.setText("军事");break;case 1:textView.setText("娱乐");break;case 2:textView.setText("体育");break;}return view;}
Fragment布局文件:也很简单,放置一个TextView来显示文本
FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.shen.actionbar.MyFragment"><!-- TODO: Update blank fragment layout --><TextViewandroid:id="@+id/tvText"android:layout_width="match_parent"android:layout_height="match_parent"android:text="myFragmemt" /></FrameLayout>
当然要进行书签导航翻页,FragmentPagerAdapter也是少不了的。
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {private List<Fragment> list;public MyFragmentPagerAdapter(FragmentManager fm) {super(fm);}public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {super(fm);this.list = list;}@Overridepublic Fragment getItem(int position) {return list.get(position);}@Overridepublic int getCount() {return list.size();}}
完成这些就可以实现“书签导航”啦~样式如图:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息