Материал кнопка "закрыть" на панели инструментов вместо назад


Я видел в приложении "входящие" Google, составляя новое электронное письмо, на панели инструментов вместо кнопки "назад" (стрелка) у него есть кнопка "Закрыть" (см. рисунок).

Как я могу этого достичь?

6 63

6 ответов:

использовать

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

для достижения этой цели.

Вы можете создать свой собственный значок закрытия или получить от material design icon set на GitHub. Кроме того, добавьте эту строку перед строкой выше, чтобы закрыть функцию в качестве стрелки назад.

this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

вам нужно определить родителя в манифесте, а затем переопределить 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;
}

enter image description here

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

извините за поздний ответ. Я нашел самое простое решение для вас. здесь прежде всего ответ не работает для меня (because i want to use toolbar not actionBar due to theming). поэтому попробуйте добавить кнопку закрытия через XML-макет. и это работает.

вот синтаксис xml для добавления кнопки закрытия на панель инструментов (v7) .

app:navigationIcon="@drawable/ic_close_black_24dp"

ans вот выходное изображение output image

альтернативой определению родительского действия в манифесте является обработка действия, которое необходимо выполнить в методе 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);
}

вы можете определить стиль:

<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>