关于Android导航页开发的体会

最近尝试做一个有社交网络服务和IM服务的项目,想使用比较流行的方式实现程序的导航,一开始

借鉴了网上的DrawerLayout加ViewPager的模式,但始终觉得界面不够直观,于是改变想法,采用

了底部大类导航栏加顶端Tab小类导航加ViewPager的导航模式,有点像微信的导航模式(某种程度上来

说有完全不像,笑),主要涉及到ViewPager,Fragment,FragmentPagerAdapter,由于网上例子

很多,主要写一些体会

 

程序界面:

关于Android导航页开发的体会_第1张图片


大类实现(我把底端的导航称为大类)

采用一组RadioGroup,在onCheckedChanged方法中给出Fragment的切换规则

使用selector为RadioButton设置触发时的响应

Fragment内容填充的一个FrameLayout布局中(注意设置layout_weight以保证占满屏幕)

中间的分割线可以考虑通过ImageView来实现(设置高度1dp,background为灰)

 

小类下的细分(使用ViewPager+FragmentPagerAdapter实现)

顶端的两个Tab可以考虑使用TextView+绘制滑动条来实现

重写FragmentPagerAdapter:

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
    private ArrayList<Fragment> fragmentsList;

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

    public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments) {
        super(fm);
        this.fragmentsList = fragments;
    }

    @Override
    public int getCount() {
        return fragmentsList.size();
    }

    @Override
    public Fragment getItem(int arg0) {
        return fragmentsList.get(arg0);
    }

    @Override
    public int getItemPosition(Object object) {
        return super.getItemPosition(object);
    }


}



在setAdapter时注意使用getChildFragmentManager,因为如果在Fragment中嵌套Fragment,要用

getChildFragmentManager

例子:

mPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), fragmentsList));

 

重写OnPagerChangeListener

你可能感兴趣的:(viewpager,Android导航页)