Как изменить значок кнопки возврата на панели инструментов в android компонентов материала - PullRequest
1 голос
/ 26 мая 2020

Я хотел бы изменить значок перехода вверх по умолчанию (значок кнопки «Назад») на свой собственный значок. Я не использую ящик, а только простую панель инструментов и компоненты материала

Возможно ли это?

enter image description here

Ответы [ 2 ]

3 голосов
/ 29 мая 2020

Если вы используете Toolbar на , измените значок просто используйте:

Toolbar toolbar = findViewById(R.id.xxx);
toolbar.setNavigationIcon(R.drawable.xxxx4);
setSupportActionBar(toolbar);

Если вы используете ActionBar вы можете использовать:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.xxx);

Вы также можете изменить его, переопределив в своей теме приложения атрибут homeAsUpIndicator:

  <style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
    <item name="homeAsUpIndicator">@drawable/...</item>
  </style>

Если вы используете Navigation Компоненты , в настоящее время нет возможности настроить значок HomeAsUpIndicator, и это ожидаемое поведение с отображаемой кнопкой «Вверх», когда вы находитесь в месте назначения, отличном от root. Существует обходной путь: добавление addOnDestinationChangedListener после вашего метода настройки и проверка места назначения. Примерно так:

navController.addOnDestinationChangedListener(
        new NavController.OnDestinationChangedListener() {
            @Override
            public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
                if (destination.getId() == R.id.nav_xxx) {
                    //With ActionBar                        
                    //getSupportActionBar().setHomeAsUpIndicator(R.drawable.xxxx);

                    //With a Toolbar
                    toolbar.setNavigationIcon(R.drawable.xxxx);
                }
            }
        });

введите описание изображения здесь

0 голосов
/ 04 июня 2020

Если вы создали панель инструментов и установили ее как ActionBar, как показано ниже

toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)

У вас есть два варианта установки пользовательского значка:

Вариант 1

toolbar?.setNavigationIcon(R.drawable.homeNavigationIcon)

Вариант 2

supportActionBar?.setHomeAsUpIndicator(R.drawable.homeNavigationIcon)
...