底部导航消失
BottomNavigation GONE
我在 Main Activity 中创建了一个底部导航,但是,我想让它消失在片段中。如何让我的底部导航消失?
Class 主要 Activity
class MainActivity : AppCompatActivity() {
private val controlador by lazy {
findNavController(R.id.pokemons_activity_nav_host)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
configNavControler()
}
private fun configNavControler() {
val navView: BottomNavigationView = findViewById(R.id.main_activity_bottom_navigation)
val navHostFragment = supportFragmentManager
.findFragmentById(R.id.pokemons_activity_nav_host) as NavHostFragment
val navController = navHostFragment.navController
navView.setupWithNavController(navController)
}
}
片段 class 我不希望底部导航出现的地方
class EntradaFragment : Fragment() {
private val controlador by lazy {
findNavController()
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(
R.layout.entrada,
container,
false
)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
botao_entrar.setOnClickListener {
val direcao = EntradaFragmentDirections.acaoEntradaParaListaPokemons()
controlador.navigate(direcao)
}
}
}
首先从您的片段中访问您的 BottommNavigationView
,如下所示:
var nav = getActivity().findViewById(R.id.main_activity_bottom_navigation)
然后你可以这样隐藏它:
nav.visibility = View.GONE
topDestinationIds
属性 包含您的主要片段的 ID。当导航改变时,导航控制器的侦听器被调用,在那里你改变你的底部导航视图的可见性。
class MainActivity : AppCompatActivity() {
private val controlador by lazy {
findNavController(R.id.pokemons_activity_nav_host)
}
private val topDestinationIds = setOf(
R.id.firstFragment,
R.id.secondFragment,
R.id.thirdFragment
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
configNavControler()
}
private fun configNavControler() {
val navView: BottomNavigationView = findViewById(R.id.main_activity_bottom_navigation)
val navHostFragment = supportFragmentManager
.findFragmentById(R.id.pokemons_activity_nav_host) as NavHostFragment
val navController = navHostFragment.navController
navView.setupWithNavController(navController)
navController.addOnDestinationChangedListener { _, destination, _ ->
if (destination.id !in topDestinationIds) {
navView.visibility = View.GONE
} else {
navView.visibility = View.VISIBLE
}
}
}
}
我在 Main Activity 中创建了一个底部导航,但是,我想让它消失在片段中。如何让我的底部导航消失?
Class 主要 Activity
class MainActivity : AppCompatActivity() {
private val controlador by lazy {
findNavController(R.id.pokemons_activity_nav_host)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
configNavControler()
}
private fun configNavControler() {
val navView: BottomNavigationView = findViewById(R.id.main_activity_bottom_navigation)
val navHostFragment = supportFragmentManager
.findFragmentById(R.id.pokemons_activity_nav_host) as NavHostFragment
val navController = navHostFragment.navController
navView.setupWithNavController(navController)
}
}
片段 class 我不希望底部导航出现的地方
class EntradaFragment : Fragment() {
private val controlador by lazy {
findNavController()
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(
R.layout.entrada,
container,
false
)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
botao_entrar.setOnClickListener {
val direcao = EntradaFragmentDirections.acaoEntradaParaListaPokemons()
controlador.navigate(direcao)
}
}
}
首先从您的片段中访问您的 BottommNavigationView
,如下所示:
var nav = getActivity().findViewById(R.id.main_activity_bottom_navigation)
然后你可以这样隐藏它:
nav.visibility = View.GONE
topDestinationIds
属性 包含您的主要片段的 ID。当导航改变时,导航控制器的侦听器被调用,在那里你改变你的底部导航视图的可见性。
class MainActivity : AppCompatActivity() {
private val controlador by lazy {
findNavController(R.id.pokemons_activity_nav_host)
}
private val topDestinationIds = setOf(
R.id.firstFragment,
R.id.secondFragment,
R.id.thirdFragment
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
configNavControler()
}
private fun configNavControler() {
val navView: BottomNavigationView = findViewById(R.id.main_activity_bottom_navigation)
val navHostFragment = supportFragmentManager
.findFragmentById(R.id.pokemons_activity_nav_host) as NavHostFragment
val navController = navHostFragment.navController
navView.setupWithNavController(navController)
navController.addOnDestinationChangedListener { _, destination, _ ->
if (destination.id !in topDestinationIds) {
navView.visibility = View.GONE
} else {
navView.visibility = View.VISIBLE
}
}
}
}