如何在Android中以编程方式隐藏工具栏主页/返回按钮?

5

我的应用有一个与WhatsApp类似的项目选择功能,长按后可以选择多个项目进行删除。一切都很正常,直到我需要一个按钮来清除所选内容。我想使用返回按钮(箭头)来清除选择,并且希望在单击后消失,但我找不到实现这一点的方法。

supportActionBar?.setDisplayHomeAsUpEnabled(false)

这可能是第一种解决方案,但我认为它不能以编程方式隐藏按钮。

我也尝试过这样做,因为我用垃圾桶图标来删除,但无法将其应用于返回箭头。

toolbarMainActivity.menu.findItem(R.id.home).isVisible = false

我也尝试在工具栏、应用条布局和menu_main.xml文件中更改值,但无法设置重力或强制使图标位于应用程序标题前面的返回箭头位置。
这在应用程序启动时有效,但将其设置为true后,将其设置为false并不会隐藏该箭头,只有重新创建才能实现。
supportActionBar?.setDisplayHomeAsUpEnabled(false)

![1]: https://imgur.com/y5AgYde.jpg "tooltip"

我只想在按下返回按钮清除选择后隐藏它。

2个回答

8
如果您正在使用工具栏,您可以使用其自己的导航图标API。
您可以使用以下代码更改图标:
toolbar.setNavigationIcon(R.drawable....);

在您的情况下,您可以使用以下内容:
toolbar.setNavigationIcon(null);

你可以添加一个 OnClickListener
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
      @Override public void onClick(View view) {
        //...Do something
      }
    });

您可以使用 androidx.appcompat.widget.Toolbar 或使用包含在Material Components库中的MaterialToolbar


谢谢,它起作用了!但是现在supportActionBar?.setDisplayHomeAsUpEnabled(true)不能再使按钮可见了。我在哪里可以找到正确的导航按钮drawable? - Andre Andriole
在官方材料图标集中。 - Gabriele Mariotti

3
尝试使用此解决方案来显示返回按钮。
 if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setHomeButtonEnabled(true);
        }

为了隐藏返回按钮
if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
        getSupportActionBar().setHomeButtonEnabled(false);
    }

supportActionBar?.setDisplayHomeAsUpEnabled(false) 这只是Kotlin中的getter方法。 - Andre Andriole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接