首先看下效果图
因为公司要求做一个oa 但是需要有消息提醒 辗转反侧 彻夜难眠 终于在网上看到一个demo解决我这个问题。
参考https://github.com/tyzlmjj/PagerBottomTabStrip
这个demo 这个大佬写的不错 值得借鉴。
首先添加依赖
去demo pager-bottom-tab-strip把这个依赖到自己的项目
compile 'me.leolin:ShortcutBadger:1.1.4@aar'
implementation project(':pager-bottom-tab-strip')
然后在你的主页布局里添加自定义布局 自定义的 ViewPager和PageNavigationView
<fengda.com.fengdaoa.widget.NoTouchViewPager
android:id="@+id/viewPager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/tab" />
<me.majiajie.pagerbottomtabstrip.PageNavigationView
android:id="@+id/tab"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_alignParentBottom="true"
android:background="@drawable/tab_background"
android:elevation="8dp" />
然后再主页代码里 我这里直接上代码了。
public class MainActivity extends AppCompatActivity {
private List<Fragment> fragments = new ArrayList<>();
public static int widthPixels;
public static Activity a;
private PageNavigationView tab;
private NavigationController navigationController;
private CommonNetwork commonNetwork;
DecodeJSON_Msg_UnRead_Count decodeJSON_msgList;
private boolean StopUpdate;
DecodeJSON_Show_Index decodeJSON_show_index;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
a = this;
fragments = getFragments();
tab = findViewById(R.id.tab);
navigationController = tab.custom()
.addItem(newItem(R.drawable.no_xiaoxi, R.drawable.click_xiaoxi, "消息"))
.addItem(newItem(R.drawable.no_shijian, R.drawable.click_shijian, "大事件"))
.addItem(newItem(R.drawable.no_gongzuo, R.drawable.click__gongzuo, "工作"))
.addItem(newItem(R.drawable.no_wode, R.drawable.click_wode, "我的"))
.build();
ViewPager viewPager = findViewById(R.id.viewPager);
viewPager.setAdapter(new MyViewPagerAdapters(getSupportFragmentManager(), fragments));
//自动适配ViewPager页面切换
navigationController.setupWithViewPager(viewPager);
//从第二页开始加载
// navigationController.setSelect(2);
//设置显示小圆点
navigationController.setHasMessage(1, true);
//获取屏幕宽度 宽度引用到头像上传的框的宽度
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
widthPixels = dm.widthPixels;
}
public List<Fragment> getFragments() {
fragments.add(MessageFragments.newInstance());
fragments.add(CustomerFragment.newInstance());
fragments.add(ContactsFragment.newInstance());
fragments.add(MyFragment.newInstance());
return fragments;
}
//创建一个Item
private BaseTabItem newItem(int drawable, int checkedDrawable, String text) {
NormalItemView normalItemView = new NormalItemView(this);
normalItemView.initialize(drawable, checkedDrawable, text);
normalItemView.setTextDefaultColor(getResources().getColor(R.color.main_line));
normalItemView.setTextCheckedColor(getResources().getColor(R.color.status_bar));
return normalItemView;
}
}
现在页面就实现了 切换 我需要四个页面切换 所以写了四个 这里你需要几个 就写几个Fragment添加进去
现在设置消息数
//设置消息数
navigationController.setMessageNumber(0, 1);
先说明一下 第一个参数0 代表你添加的第几个参数 我需要的是第一个 所以是0
第二个参数是显示的消息数量 设置0就不显示
这样就大功告成了。。。不喜勿喷 谢谢