工具栏中的材料“关闭”按钮,而不是“上一步”


Answers:


108

使用  

this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_close);

 

为了达成这个。

您可以创建自己的关闭图标,也可以从GitHub上的材料设计图标集获取。另外,在此行的上方添加此行以使关闭功能作为后退箭头。

this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

没用 它不会用新图标替换后退箭头,两者都会出现。此外,使用此解决方案,图标不会获得“ colorPrimaryDark”属性。
Marta Rodriguez

它可以工作,但并不是我想要的。我希望使用“ colorPrimaryDark”作为后退图标工作。但是似乎“关闭”图标不是SDK的一部分。谢谢@AlokNair!
Marta Rodriguez 2014年

1
使用ActionBarActivity并在清单中指定PARENT时,效果很好。+1作为答案。谢了哥们!
PsyGik 2015年

7
我发现必须在SetHomeAsUpIndicator之前调用setDisplayHomeAsUpEnabled,否则该图标将不会被替换。
CodeChimp

1
以及如何变回原来的?
米歇尔·费恩斯坦

22

您需要在清单中定义一个父项,然后使用支持应用程序栏重写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;
}

在此处输入图片说明


3
您出于什么原因返回假onSupportNavigateUp()?该文件说,这只是一个成功的标志
brainmurphy1年

7

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

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

app:navigationIcon="@drawable/ic_close_black_24dp"

Ans这是输出图像 输出图像


哪里@drawable/ic_close_black_24dp来的?
CACuzcatlan

@CACuzcatlan那只是他在drawable文件夹中的随机图像。您可以选择任何图标。
Mikkel Larsen

@CACuzcatlan,您可以在Android Studio矢量资源中找到它。
Sourav Bagchi

5
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Search");
toolbar.setNavigationIcon(R.drawable.abc_ic_clear_mtrl_alpha);
setSupportActionBar(toolbar);

3

在清单中定义父活动的另一种方法是处理在onOptionsItemSelected方法中采取的操作,如本例所示:

 @Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
        // Respond to the action bar's Up/Home/back button
        case android.R.id.home:
            finish();
            break;
    }
    return super.onOptionsItemSelected(item);
}

-5

您可以定义样式:

<style name="Theme.Toolbar.Clear">
    <item name="toolbarNavigationIcon">@drawable/abc_ic_clear_mtrl_alpha</item>
</style>

并在您的主题中使用它:

<style name="Theme.Clear">
    <item name="toolbarTheme">@style/Theme.Toolbar.Clear</item>
</style>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.