工具栏中的材料"关闭"按钮而不是"后退"

Mar*_*uez 75 android android-actionbar material-design

我在谷歌的收件箱应用程序中看到,编写一个新的电子邮件,在工具栏中而不是后退按钮(箭头),它有一个"关闭"按钮(见图片).

我怎样才能做到这一点?

收件箱撰写关闭按钮

Alo*_*air 102

使用  

this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_close);
Run Code Online (Sandbox Code Playgroud)

 

为达到这个.

您可以创建自己的关闭图标或从GitHub上设置的材料设计图标获取.另外,在上面的行之前添加此行以使后退箭头成为关闭函数.

this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)

  • 我发现我必须在SetHomeAsUpIndicator之前调用setDisplayHomeAsUpEnabled,否则不会替换图标. (7认同)

wor*_*ked 19

您需要在清单中定义父级,然后如果使用支持应用程序栏,则覆盖onSupportNavigationUp().此外,请访问此图标包的方便网站:https: //www.google.com/design/icons/

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.yourAwesomeLayout);

    setupToolBar();    
}

private void setupToolBar() {
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    if (toolbar == null) return;

    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
}

@Override
public boolean onSupportNavigateUp() {
    finish(); // close this activity as oppose to navigating up

    return false;
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 你从`onSupportNavigateUp()`返回false的任何原因?文档说它只是一个成功的标志 (3认同)

Rk2*_*ech 6

抱歉回复晚了。我为您找到了最简单的解决方案。首先,这里的答案对我不起作用(because i want to use toolbar not actionBar due to theming)。因此,请尝试通过xml布局添加关闭按钮。而且有效。

这是一种向工具栏(v7)添加关闭按钮的xml语法。

app:navigationIcon="@drawable/ic_close_black_24dp"
Run Code Online (Sandbox Code Playgroud)

Ans这是输出图像 输出图像


kri*_*nan 5

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Search");
toolbar.setNavigationIcon(R.drawable.abc_ic_clear_mtrl_alpha);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)