【问题标题】:Navigation Drawer without custom toolbar没有自定义工具栏的导航抽屉
【发布时间】:2021-05-05 05:18:25
【问题描述】:

我已经实现了 带有片段的导航抽屉,它完全可以正常工作。现在我想在不使用自定义工具栏的情况下实现导航抽屉(使用 AppTheme== DarkActionbar)。如果没有自定义工具栏,我无法做到这一点。我已经浏览了许多博客和教程,但无法获得所需的解决方案。

如果有人可以帮助我解决我的问题,那将对我非常有帮助。

注意:我没有为此使用导航控制器,我使用的是旧方法,即添加 Drawer 和 DrawerActiobarToogle 等。

【问题讨论】:

  • 您可以开始使用.NoActionBar 主题

标签: android navigation-drawer material-components-android


【解决方案1】:

如果您只想像@GabrieleMariotti 建议的那样使用 ActionBar,您可以使用任何 *.NoActionBar 主题。

或者,如果您已经了解主题并想使用无工具栏的 NavigationUI,有一种方法。

在您的 MainActivity 的 onCreate 中:

NavigationView navigationView = findViewById(R.id.nav_view);
navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupWithNavController(navigationView, navController);

您可以像上面一样设置导航视图。就这样。并且不要像下面这样设置 appBarConfiguration:

drawer = findViewById(R.id.drawer_layout);
appBarConfiguration = new AppBarConfiguration.Builder(
    R.id.fragment1, R.id.fragment2, R.id.fragment3
).setOpenableLayout(drawer).build();
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);

因为你不想要工具栏,这是没必要的。

没有汉堡按钮,您仍然可以通过滑动打开抽屉。如果你想有一个汉堡按钮,在布局上放置一个按钮,设置 onClickListener 来打开抽屉。

FloatingActionButton fabNavigation = view.findViewById(R.id.fab_navigation);
fabNavigation.setOnClickListener(view1 -> onClick());

抽屉开启方法示例:

public void onClick(View view) {
    drawer.openDrawer(GravityCompat.START);
}

【讨论】:

  • 谢谢你的回答,它对我很有帮助。导航控制器是我的问题的解决方案,它很好。但是如果我们使用旧方法而不是控制器呢?
  • @HarshPatel 如果没有 NavigationUI,您将使用 navigationView.setNavigationItemSelectedListener(listener); 并实现 NavigationView.OnNavigationItemSelectedListener,您可以在其中定义用 FragmentManager 替换 Fragment。
猜你喜欢
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
  • 2015-02-26
  • 2015-01-15
  • 2016-03-26
相关资源
最近更新 更多