Android 如何在显示片段时使其他元素无法点击 [Kotlin]
Android How to make unclickable other elements when fragment is showed [Kotlin]
我有约束布局。在它里面我有三个元素:中间的工具栏、RecyclerView 和 FragmentContainerView。看起来像 this.
我制作了可点击的 RecyclerView,当我点击所选项目时,我在 FragmentContainerView 上添加了新片段
adapter.setOnItemClickListener(object: RecyclerViewAdapter.OnItemClickListener{
override fun onItemClick(position: Int) {
supportFragmentManager.beginTransaction().add(R.id.fragmentcontainer_id, Fragment1::class.java,null).addToBackStack(null).commit()
}
})
问题是片段显示后,我仍然可以滚动 RecyclerView 并与之交互。在关闭打开的片段之前,我想让所有其他元素都不可点击。
您可以在点击侦听器中添加一个 if
条件来检查该片段是否已经显示,如果是这种情况基本上什么也不做。如果在 add
ing 片段时包含标签,you could just check if it's already added:
override fun onItemClick(position: Int) {
val tag = "my cool fragment"
if (supportFragmentManager.findFragmentByTag(tag) == null) {
supportFragmentManager.beginTransaction()
.add(R.id.fragmentcontainer_id, Fragment1::class.java, null, tag) // tagged here
.addToBackStack(null)
.commit()
} // does nothing if a fragment with that tag already exists
}
我有约束布局。在它里面我有三个元素:中间的工具栏、RecyclerView 和 FragmentContainerView。看起来像 this.
我制作了可点击的 RecyclerView,当我点击所选项目时,我在 FragmentContainerView 上添加了新片段
adapter.setOnItemClickListener(object: RecyclerViewAdapter.OnItemClickListener{
override fun onItemClick(position: Int) {
supportFragmentManager.beginTransaction().add(R.id.fragmentcontainer_id, Fragment1::class.java,null).addToBackStack(null).commit()
}
})
问题是片段显示后,我仍然可以滚动 RecyclerView 并与之交互。在关闭打开的片段之前,我想让所有其他元素都不可点击。
您可以在点击侦听器中添加一个 if
条件来检查该片段是否已经显示,如果是这种情况基本上什么也不做。如果在 add
ing 片段时包含标签,you could just check if it's already added:
override fun onItemClick(position: Int) {
val tag = "my cool fragment"
if (supportFragmentManager.findFragmentByTag(tag) == null) {
supportFragmentManager.beginTransaction()
.add(R.id.fragmentcontainer_id, Fragment1::class.java, null, tag) // tagged here
.addToBackStack(null)
.commit()
} // does nothing if a fragment with that tag already exists
}