欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一行代码创建可以左右滑动切换的底部导航栏

程序员文章站 2022-07-03 18:26:16
NavigationBar简单实用的底部导航栏一、如何引入Step 1. 将JitPack存储库添加到您的构建文件中allprojects { repositories { ... maven { url 'https://jitpack.io' } }}Step 2. 添加依赖项dependencies { ··· implementation 'com.github.wy749814530:NavigationBar:1.0...

NavigationBar

简单实用的底部导航栏

一、如何引入

Step 1. 将JitPack存储库添加到您的构建文件中

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Step 2. 添加依赖项

dependencies {
    ···
    implementation 'com.github.wy749814530:NavigationBar:1.0.2'
}

二、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://blog.csdn.net/weixin_42169702/article/details/107380467