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

   日期:2020-07-18     浏览:100    评论:0    
核心提示: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.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

欢迎点赞留言。
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服