在 Android 中以编程方式隐藏工具栏主页/后退按钮?

Hide Toolbar Home / Back button programmatically in Android?

我的应用程序有一个项目 selection 就像 WhatsApp 一样,长按我可以 select 多个项目来删除它们。一切正常,直到我需要一个按钮来清除 selection。我想使用后退按钮(箭头)清除 selection,我希望后退箭头在单击后消失,但我找不到办法做到这一点。

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"

我只是想在按下后退按钮以清除后隐藏它 selection。

试试这个解决方案 用于显示后退按钮

 if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setHomeButtonEnabled(true);
        }

用于隐藏后退按钮

if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
        getSupportActionBar().setHomeButtonEnabled(false);
    }

如果您使用的是 Toolbar,则可以使用它自己的导航图标 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 or can use a MaterialToolbar included in the Material Components library.