1:根据顶部切换的标签和屏幕的宽度动态设置底部导航图片的宽度
//下划线的长度
private int width;
//当前选中的标签页下标
private int index=0;
//Fragment的个数
private int num=0;
private LinearLayout.LayoutParams params;
private void init() {
//获得滑动标签图片的getLayoutParams();
params= (LinearLayout.LayoutParams) image_pull.getLayoutParams();
//获得屏幕的宽度
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().g)width=dm.widthPixels;
//添加Fragment集合
List<Fragment> list=new ArrayList<Fragment>();
//实例化Fragment管理器
FragmentManager fm=getSupportFragmentManager();gmentManager();
//创建适配器
adapter=new ViewAdapter(fm,list);
mViewPager.setAdapter(adapter);
LinearLayout.LayoutParams lp= (LinearLayout.LayoutParams) image_pull.getLayoutParams();
//根据顶部标签的数量和屏幕的宽度计算出下划线的宽度
num=list.size();
lp.width=width/num;
//重新设置下导航图片的宽度
image_pull.setLayoutParams(params);
}
2:对Viewpager添加OnPageChangeListener方法并在其onPageScrolled方法中添加对导航图片的设置
private class myPageChangeListener implements ViewPager.OnPageChangeListener{
/**
* 当页面在滑动时调用的方法一直到滑动结束
*
* @param position
* :当前页面,及你点击滑动的页面
* @param positionOffset
* :当前页面偏移的百分比
* @param positionOffsetPixels
* :当前页面偏移的像素位置
* */
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//跳转到下个页面
if(index==position){
//计算下划线距离左部的Margin达到下划线随着手势滑动而滑动
params.leftMargin=(int) (positionOffset * (width * 1.0 / num) + index
* (width / num));
}
//跳转到上一页面
if(index==(position+1)){
params.leftMargin = (int) (-(1 - positionOffset) * (width * 1.0 / num) + index
* (width / num));
}
//添加下划线距离左部间距
image_pull.setLayoutParams(params);
}
/**
* 当页面已经跳转完毕时调用的方法
*
* @param position
* 代表当前页面的下标
* */
@Override
public void onPageSelected(int position) {
//更新下标
index=position;
}
/**
* 滑动状态
*
* =2 滑动完成
* */
@Override
public void onPageScrollStateChanged(int state) {
}``