Skip to content

V2_自定义扩展

家杰 edited this page Aug 7, 2017 · 6 revisions

如果你想用自己布局替代导航栏中默认的Item,那么V2版本中有一个我自己认为比较简单的方法去实现。

先来看一个例子

Library中已经实现了的一个例子NormalItemView

初始化导航栏的时候需要这样写:

@Override
protected void onCreate(Bundle savedInstanceState) {
        ......
        
        PageNavigationView tab = (PageNavigationView) findViewById(R.id.tab);
        
        //注意这里调用了custom()方法
        NavigationController navigationController = tab.custom()
                .addItem(newItem(R.drawable.ic_restore_gray_24dp,R.drawable.ic_restore_teal_24dp,"Recents"))
                .addItem(newItem(R.drawable.ic_favorite_gray_24dp,R.drawable.ic_favorite_teal_24dp,"Favorites"))
                .addItem(newItem(R.drawable.ic_nearby_gray_24dp,R.drawable.ic_nearby_teal_24dp,"Nearby"))
                .build();
        ......
}

//创建一个Item
private BaseTabItem newItem(int drawable,int checkedDrawable,String text){
        NormalItemView normalItemView = new NormalItemView(this);
        normalItemView.initialize(drawable,checkedDrawable,text);
        normalItemView.setTextDefaultColor(Color.GRAY);
        normalItemView.setTextCheckedColor(0xFF009688);
        return normalItemView;
}

前后都是一样的,无非就是构建的时候有一点点区别。这已经是我目前认为比较简单的方法了。

如何自定义

你需要创建一个类,继承BaseTabItem,仅此而已!

当然BaseTabItem是一个抽象类,你需要实现它的方法,不过稍微有点安卓基础应该就不难了吧 了吧 吧

我自定义的两个效果

Library中已经实现的一个最普通的效果
PagerBottomTabStrip
Demo中的例子
PagerBottomTabStrip PagerBottomTabStrip