【发布时间】:2021-07-08 20:11:36
【问题描述】:
我有一个包含搜索的应用栏,我想让它只出现在片段中,而不是像现在这样出现。我将如何改变他的知名度?
主要活动在哪里实现
class MainActivity : AppCompatActivity() {
private lateinit var toggle: ActionBarDrawerToggle
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()
configDrawer()
}
private fun configDrawer() {
toggle = ActionBarDrawerToggle(this, drawerLayout as DrawerLayout?, R.string.open,
R.string.close)
(drawerLayout as DrawerLayout?)?.addDrawerListener(toggle)
toggle.syncState()
supportActionBar?.setDisplayHomeAsUpEnabled(true)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if(toggle.onOptionsItemSelected(item)){
return true
}
return super.onOptionsItemSelected(item)
}
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)
configNavView(navController, navView) // configura para ver se o Nav View aparece ou nao
}
private fun configNavView(
navController: NavController,
navView: BottomNavigationView
) {
// pega o id do fragment e compara,se for igual, faz as atribuições necessárias (aparecer ou
desaparecer Nav View)
navController.addOnDestinationChangedListener { controller, destination, arguments ->
if (destination.id == R.id.entrada_graph) {
navView.visibility = View.GONE
} else {
navView.visibility = View.VISIBLE
}
}
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
val inflater = menuInflater
inflater.inflate(R.menu.search_menu, menu)
val manager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
val searchItem = menu?.findItem(R.id.action_search)
val searchView = searchItem?.actionView as SearchView
searchView.setSearchableInfo(manager.getSearchableInfo(componentName))
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener{
override fun onQueryTextSubmit(query: String?): Boolean {
searchView.clearFocus()
searchView.setQuery("", false)
searchItem.collapseActionView()
Toast.makeText(this@MainActivity, "Carregando $query", Toast.LENGTH_LONG).show()
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
return false
}
})
return true
}
}
我想让它只出现在一个片段中,我尝试实现与我的 BottomNavigation 相同但我做不到
【问题讨论】: