- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我使用 setOnNavigationItemSelectedListener
BottomNavigationView
像下面的屏幕截图一样卡住涟漪效果。并且效果状态一直保持这样。
我不明白为什么?
我正在使用 com.android.support:design:27.1.1
binding = DataBindingUtil
.setContentView(this, R.layout.activity_main)
bottomBar = binding?.bottomBarNavigation as BottomNavigationView
bottomBar?.setOnNavigationItemSelectedListener {
when (it.itemId) {
TabBarObject.TAB_MESSENGER -> replaceFragment(
MessengerFragment(),
TabBarObject.TAB_MESSENGER.tabName
)
...
...
}
}
private fun getTabInfo(menuItemId: Int): TabBarObject {
return when (menuItemId) {
R.id.tab_messenger -> TabBarObject.TAB_MESSENGER
...
...
else -> throw IllegalArgumentException("UNKNOWN TAB BAR TYPE")
}
}
private fun replaceFragment(fragment: Fragment, tag: String): Boolean {
val ft = supportFragmentManager.beginTransaction()
ft.replace(R.id.frame_layout, fragment, tag)
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
ft.commitAllowingStateLoss()
return true
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<android.support.constraint.ConstraintLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".Activities.MainActivity">
<FrameLayout
android:id="@+id/frame_layout"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/bottom_bar_navigation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_bar_navigation"
style="@style/BottomNavigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/bottombar_tabs" />
</android.support.constraint.ConstraintLayout>
</layout>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/tab_messenger"
android:icon="@drawable/ic_messenger_bottom_bar"
android:title="@string/employer.app.bottombar.messenger.title" />
...
...
</menu>
最佳答案
感谢这个问题已经有点老了,我不能肯定这是否会对你有所帮助。但是由于还没有答案,我将分享我今天在处理相同问题时的发现。事实证明,是一些完全不相关的代码(或者看起来如此)导致了这个问题。
就像你描述的那样,波纹动画有时会卡住。就我而言,导航到一个特定 fragment 时总是卡住。当该 fragment 打开时,它会运行一些代码,这些代码在某些时候将任务发布到某个 View 的处理程序(View.getHandler()
)。在发布任务之前,该函数正在调用 Handler.removeCallbacksAndMessages(null)
清除队列。它(可能)这样做是因为错误地假设队列中的唯一任务将是该函数的早期调用所发布的任务(在这种情况下,避免冗余工作是有意义的)。
但是,即使您从特定 View 检索处理程序,它也是一个由 UI 线程上发生的任何事情共享的处理程序。因此,如果你碰巧调用了 clear-all 方法 removeCallbacksAndMessages
在错误的时间,淡出导航栏上的涟漪效果的动画也被取消了。
删除对 removeCallbacksAndMessages
的调用后,波纹动画总是按预期完成。
您可以在将任务发布到处理程序时使用 token 以更优雅的方式避免此问题,因为这反过来允许您仅取消具有特定 token 的任务。 token 不适用于 post
的所有变体不过,并非所有 API 版本都如此。
关于android - 使用 setOnNavigationItemSelectedListener 时,波纹效果 BottomNavigationView 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50984910/
目前我正在开发一个底部导航栏和三个菜单项的应用程序。我用过setOnNavigationItemSelectedListener()对于被点击的项目。但现在我面临该方法已贬值的问题。 应用语言:Jav
我有一个带有 5 个项目和 fragment 的 BottomNavigationView Activity 来显示页面,我将 NavController 设置如下: NavigationUI.set
当我尝试使用“切换案例”中的 Intent 在 Activity 之间切换时,出现以下错误:java.lang.NullPointerException:尝试在空对象引用上调用虚方法“void com
当我使用 setOnNavigationItemSelectedListener BottomNavigationView像下面的屏幕截图一样卡住涟漪效果。并且效果状态一直保持这样。 我不明白为什么?
我正在尝试在kotlin中实现导航栏,并且我在bottom_navigation.setOnNavigationItemSelectedListener上获得了 Unresolved 引用,显然bot
我是一名优秀的程序员,十分优秀!