当前位置: 移动技术网 > IT编程>开发语言>Java > 一行代码创建可以左右滑动切换的底部导航栏

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

2020年07月17日  | 移动技术网IT编程  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网