要在Android Jetpack导航组件中禁用滚动位置,可以使用FragmentNavigator类的onCreateDestination方法。以下是一个示例代码:
class DisableScrollFragmentNavigator(
    context: Context,
    manager: FragmentManager,
    containerId: Int
) : FragmentNavigator(context, manager, containerId) {
    override fun onCreateDestination(): NavDestination? {
        val destination = super.onCreateDestination()
        destination?.let {
            it.addDeepLink(it.id.toString())
        }
        return destination
    }
}
然后,在导航图中使用此自定义FragmentNavigator类。示例如下:
    
         
     
    
         
     
 
然后,在Activity中设置自定义的FragmentNavigator类:
class MainActivity : AppCompatActivity() {
    lateinit var navController: NavController
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
        navController = navHostFragment.navController
        val disableScrollNavigator = DisableScrollFragmentNavigator(this, navHostFragment.childFragmentManager, R.id.nav_host_fragment)
        navController.navigatorProvider.addNavigator(disableScrollNavigator)
        val navGraph = navController.navInflater.inflate(R.navigation.nav_graph)
        navController.graph = navGraph
        // ...
    }
}
这样就可以在Android Jetpack导航组件中禁用滚动位置了。