在工具栏中显示/隐藏返回按钮

3
我希望在某些情况下在工具栏中显示返回按钮,并在另一种情况下隐藏它。我编写了以下代码:
public void setupToolbar() {
    if (mStacks.get(mCurrentTab).size() > 1) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        toolbar.setNavigationOnClickListener(v -> onBackPressed());
    } else {
        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
        getSupportActionBar().setHomeButtonEnabled(false);
    }
} 

但是我的问题是,当我将主页按钮设置为false时,即使第一个条件成立,它也不会再次显示。有人可以帮帮我吗?

尝试调用 getSupportActionBar().setDisplayShowHomeEnabled(true); - Atef Hares
1
@AtefHares 没有任何变化。 - salmanseifian
你是否将工具栏设置为支持操作栏?在你的onCreate()方法中,你需要执行以下操作:// 工具栏 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); - Nicola Gallazzi
@NicolaGallazzi 是的,我将其设置为支持操作栏。 - salmanseifian
2个回答

10
在工具栏中显示/隐藏返回按钮。请尝试一下。
显示代码
 if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
    }

隐藏代码

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

0

如果我理解你的意思正确的话,你应该使用以下代码:

 private void hideSystemUI() {
    // Enables regular immersive mode.
    // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
    // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE
                    // Set the content to appear under the system bars so that the
                    // content doesn't resize when the system bars hide and show.
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    // Hide the nav bar and status bar
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN);
}

这个函数隐藏了返回按钮和主页按钮

要显示,您应该使用以下代码:

private void showSystemUI() {
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

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