NavigationBar
简单实用的底部导航栏
效果
一、如何引入
Step 1. 将JitPack存储库添加到您的构建文件中
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. 添加依赖项
dependencies {
···
implementation 'com.github.wy749814530:NavigationBar:1.0.4'
}
二、XML 布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fl_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_999999">
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.viewpager.widget.ViewPager>
<com.wang.navigation.NavigationView
android:id="@+id/navigationView"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_gravity="bottom" />
</FrameLayout>
三、Activity中使用
navigationView.setContainer(R.id.fl_container)
.setBackgroudColor(ContextCompat.getColor(this, R.color.white_ffffff)).setColors(
ContextCompat.getColor(this, R.color.gray_999999),
ContextCompat.getColor(this, R.color.blue_49a6f6)
).addItem(
FragmnetA::class.java,
"AAAA",
R.mipmap.ic_launcher,
R.mipmap.ic_launcher_round
)
.addItem(
FragmnetB::class.java,
"BBBB",
R.mipmap.ic_launcher,
R.mipmap.ic_launcher_round
).addRoundItem(
FragmnetC::class.java,
"CCCC",
R.mipmap.ic_launcher,
R.mipmap.ic_launcher_round
).addRoundItem(
FragmnetD::class.java,
"",
R.mipmap.ic_launcher,
R.mipmap.ic_launcher_round
)
.addItem(
FragmnetE::class.java,
"EEEE",
R.mipmap.ic_launcher,
R.mipmap.ic_launcher_round
).build().setWithViewPager(viewPager).applay();
navigationView.setTabItemSelectedListener(object : OnTabItemSelectedListener {
override fun onSelected(index: Int, old: Int) {
Toast.makeText(
this@MainActivity,
"== onSelected index $index , old is $old==",
Toast.LENGTH_SHORT
).show()
}
override fun onRepeat(index: Int) {
Toast.makeText(
this@MainActivity,
"== onSelected index $index ==",
Toast.LENGTH_SHORT
).show()
}
})
四、API
1. 设置Fragment承载布局id
fun setContainer(containerId: Int): NavigationView
2. 设置默认选中的Fragment
fun setDefaultSelect(firstCheckedIndex: Int): NavigationView
3. 添加圆形凸起的Item
fun addRoundItem(
fragmentClass: Class<*>,
title: String,
defaultIcon: Int,
selectIcon: Int
): NavigationView
4. 添加普通Item
fun addItem(
fragmentClass: Class<*>,
title: String,
defaultIcon: Int,
selectIcon: Int
): NavigationView
5. 构建导航
fun build(): NavigationView.NavigationPager
5.1 NavigationView.NavigationPager
5.1.1 若需要支持左右滑动则需要设置ViewPager,不需要左右滑动,则不需要调用此方法。
fun setWithViewPager(viewPager: ViewPager?): NavigationPager
5.1.2 构建完成开始绘制
fun applay()
6. 设置要显示的Fragment
fun setSelect(index: Int)
7. 获取导航Fragment总个数
fun getItemCount(): Int
8. 获取对应Fragment实例
fun getFragmentByIndex(index: Int): Fragment?
9. 获取导航按钮文字
fun getItemTitle(index: Int): String?
10. 设置导航栏背景颜色
fun setBackgroudColor(backgroudColor: Int): NavigationView
11. 设置导航按钮选中前与选中后文字颜色
fun setColors(defaultColor: Int, selectColor: Int): NavigationView
12. 设置导航按钮字体大小
fun setTextSize(titleSizeInDp: Int): NavigationView
13. 设置导航按钮图标大小
// 如果是圆形突出Item大小会自动调整
fun setIconWidth(iconWidth: Int): NavigationView
fun setIconHeight(iconHeight: Int): NavigationView
14. 设置Item上,中,下最小间距
fun setMargin(titleIconMargin: Int): NavigationView
源码地址:
https://github.com/wy749814530/NavigationBar