android:Kotlin+viewpager+BottomNavigationView+fragment实现滑动页面及底部导航键

android:Kotlin+viewpager+BottomNavigationView+fragment实现滑动页面及底部导航键

//2020/11/20 今天重新将下面的教程写详细一点。

  • 首先在该activity布局内添加如下代码(以下代码中id可自行命名)就是在布局文件里加了viewpager和borronmNavigationview
    其中 android:layout_gravity="bottom"是将控件固定在底部
    app:labelVisibilityMode=“labeled” 是让文字全部显示
    然后borronmNavigationview这里有两个引入的布局文件
    select_home_botton和home_button
    前者需要在res下添加color包再在包里添加xml文件 如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#45000000"
        android:state_checked="false"/>
    <item android:color="#03A9F4"
        android:state_checked="true"/>
</selector>

后者则需要在res下创建menu包 包内创建xml文件 如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item
    android:id="@+id/pet_interface"
    android:checked="true"
    android:title="//你的按钮名字"
    android:icon="//图标"/>
   ...
</menu>

下面就是要添加到该view的布局文件内的代码块也就是在xml内添加这两个要用到的控件borronmNavigationview和viewpager

<androidx.viewpager.widget.ViewPager
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/page"/>
<com.google.android.material.bottomnavigation.BottomNavigationView
    android:layout_width="match_parent"
    android:id="@+id/but_home"
    android:layout_height="wrap_content"
    app:itemIconTint="@color/select_home_botton"
    app:labelVisibilityMode="labeled"
    app:itemTextColor="@color/select_home_botton"
    app:menu="@menu/home_button"
    android:layout_gravity="bottom"/>
  • 创建你想要的fragment个数个fragment,这里就不展示代码了。
  • 在com.example.****下创建一个适配器就叫FragmentAdapter
  • 然后在适配器里添加如下代码:
open class FragmentAdapter(list:List<Fragment>, fragmentManager: FragmentManager) : FragmentPagerAdapter(fragmentManager) {
    val mFragments : List<Fragment> = list
    override fun getCount(): Int {
        return mFragments.size
    }

    override fun getItem(position: Int): Fragment {
        return mFragments.get(position)
    }

然后打开该activity在onCreat()方法里添加如下代码(这里我是建了三个fragment分别是bianqianFragment,haojuFragment,meiwenFragment)

val fragments = mutableListOf<Fragment>()
        fragments.add(bianqianFragment())
        fragments.add(haojuFragment())
        fragments.add(meiwenFragment())
        //初始化数据
 val fragmentAdapter = FragmentAdapter(fragments, supportFragmentManager)
    page.adapter=fragmentAdapter
    //添加适配器
  //底部导航栏(下面)
        but_home.setOnNavigationItemSelectedListener {
            when(it.itemId) {
                R.id.home -> page.currentItem=0
                R.id.mingyan ->page.currentItem=1
                R.id.meiwen ->page.currentItem=2
            }
            false
        }
//page滑动监听(下面)
        page.addOnPageChangeListener(object : ViewPager.OnPageChangeListener{
            override fun onPageScrolled(
                position: Int,
                positionOffset: Float,
                positionOffsetPixels: Int
            ) {

            }

            override fun onPageSelected(position: Int) {
                but_home.menu.getItem(position).isChecked=true
            }

            override fun onPageScrollStateChanged(state: Int) {

            }
        })

!!!!!(以上可能需要导库,具体自行查询)

算了还是写出来叭

implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值