この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
Navigation componentでDrawerとToolbar連動したときに、どこに遷移しても戻るボタンに変わってしまい、どのページでもDrawerをメニューを開きたいときがありますよね。
Drawerから遷移するとバックボタンになってしまう
ハンバーガーアイコンをDrawerから遷移してもハンバーガーのままでいてほしい
今日はその設定の小ネタです。
基本的なNavigation componentのセットアップは公式ドキュメントを参照。
設定の仕方
プロジェクの全体のサンプルは以下を参照
AppBarConfigurationを設定する際にtopLevelDestinationIdsを設定することができます。これをNavigation Graphを設定するとstartDestinationで設定したもののみハンバーガーアイコンが表示されます。遷移後もDrawerメニューを表示したいときは、表示したいDestinationを指定することができます。
class MainActivity : AppCompatActivity(R.layout.activity_main) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val navController = findNavController((R.id.nav_host_fragment))
// トップレベルを設定することで、設定したものはハンバーガーアイコンをだす
val appBarConfiguration = AppBarConfiguration(setOf(R.id.menu1, R.id.menu2, R.id.menu3), drawer_layout)
// トップレベルがスタートにあたっているものだけなので、どこかに遷移するとすべてバックボタン
// val appBarConfiguration = AppBarConfiguration(navController.graph, drawer_layout)
nav_view.setupWithNavController(navController)
toolbar.setupWithNavController(
navController,
appBarConfiguration
)
}
}
あとがき
僕はこれで少しハマりましたので備忘録として。