Кастомный Toolbar
Как в Toolbar`e можно менять иконку меню, в зависимости от того, какая страница открыта? Не могу понять, как к ней обращаться, чтобы изменить иконку. Страницы меняются с помощью bottom nav. view.
upd: у меня в toolbar`e всего одна кнопка, находящаяся как menu – справа. Как изменять ее функционал я придумал, это можно делать и без ее участия. Но я все еще не знаю, как к ней обращаться, чтобы изменять ее иконку в зависимости от страницы – вот что мне нужно
Ответы (1 шт):
Вы можете написать свой кастомный макет для тулбара по примеру ниже:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
style="@style/Toolbar"/>
<RelativeLayout>
<!-- Весь контент тулбара -->
</RelativeLayout>
</LinearLayout>
Сюда вы можете поместить свою иконку.
Как этим управлять?
Тут зависит от того как у вас реализованы экраны.
Если у вас есть активити с bottomNav и общим тулбаром, экраны реализованы внутри активти как фрагмента, то вы просто создаете интерфейс что-то вроде такого:
interface ToolbarController { void setIcon(url: String); }Ваша активити его реализует, а все фрагменты получают экзмепляр этого интерфейса в методе
onAttach()@Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof ToolbarController) { toolbarController = (ToolbarController) context; } }И где-нибудь в
onCreateView()или где вам нужно сетить через него вашу иконку в активити.Если же у вас там просто активити (хотя я вот не уверен что с bottomNav так можно, так как сам с ним не работал. Но напишу на всяк случай). То тут просто нужно его сетить в каждой активити ручками. Можно конечно инкапсулировать макет и какую-то логику с тулбаром в какую-то сущность для удобства пользования, но больше вы вряд-ли что-то сделаете.