大家好,又见面了,我是你们的朋友全栈君。
最近尝试做一个有社交网络服务和IM服务的项目,想使用比较流行的方式实现程序的导航,一开始
借鉴了网上的DrawerLayout加ViewPager的模式,但始终觉得界面不够直观,于是改变想法,采用
了底部大类导航栏加顶端Tab小类导航加ViewPager的导航模式,有点像微信的导航模式(某种程度上来
说有完全不像,笑),主要涉及到ViewPager,Fragment,FragmentPagerAdapter,由于网上例子
很多,主要写一些体会
程序界面:
大类实现(我把底端的导航称为大类)
采用一组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
转载于:https://my.oschina.net/sikilao/blog/376249
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139170.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...