我对编程很新,这是我的第一个大型/真实项目。
- 背景 -
我在MainActivity中设置了一个ViewPager,可以在3个不同的片段之间进行滑动。另外,一个片段需要工具栏中的菜单项,并且一个BottomNavigationView保存在MainActivity中。
每次我移动到ViewPager的新项目/页面时,我想选择(检查)BottomNavView中的相应页面项目。
我尝试过以下一种配置,但无法完美配置
- 问题 -
执行 bottom_navigation.menu.getItem(pos).isChecked = true 所需的时间太长了...我的HTC One大约需要50ms,或者仿真器需要100ms。 此延迟导致ViewPager滚动操作受到震动/延迟。
我想知道是否有不同的方式检查或突出显示BottomNavBar中的相应项目,或者更理想的是,同时执行检查操作而不会妨碍滚动动画ViewPager。
- 尝试修复 -
在Anko的 doAsync {} 中找到导航项 - (结果不要改变)
// Adds a page-change listener
viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
// Set Toolbar title and menu items
override fun onPageSelected(position: Int) {
when (position) {
0 -> {
supportActionBar!!.title = "Page1"
toolbar.menu.setGroupVisible(0, false)
}
1 -> {
supportActionBar!!.title = "Page2"
if (toolbar.menu.size() == 0) {
toolbar.inflateMenu(R.menu.toolbar_list_menu)
} else {
toolbar.menu.setGroupVisible(0, true)
}
}
2 -> {
supportActionBar!!.title = "Page3"
toolbar.menu.setGroupVisible(0, false)
}
}
}
// While view pager settling on new item/page, check the correct bottom navigation view item
override fun onPageScrollStateChanged(state: Int) {
if (state == ViewPager.SCROLL_STATE_SETTLING) {
val pos = viewPager.currentItem
bottom_navigation.menu.getItem(pos).isChecked = true
}
}
// Not needed, must be implemented
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
})
我真的希望有人能够帮助我提高应用效果:)
感谢您的时间。