Как стать автором
Обновить

Комментарии 21

Что за мода пошла в каждом туториале разжевывать моменты, непонятные только тем, кто вообще не связан с темой вопроса? Хотелось бы найти на хабре человека, Кострому надо каждый раз пошагово подсказывать, как создать новый проект.
Статья для меня. Никогда не был в Костроме.
Все туторы по Navigation Drawer (и не только) — «Ding in sich», элемент интерфейса ради интерфейса.
Почему бы, не добавить конкретных примеров вместо заглушек?
Как строить интерфейс фрагментами или активити, как раз для новичков полезно.
1) Зачем делать «кастомную» Navigation Drawer, если в той же Android Studio, которая уже версии 1.0 есть шаблон приложения с боковым меню?

2) Зачем Вы используете стороннюю библиотеку MaterialDrawer от Mike Penz?

3) Если я правильно помню, Navigation Drawer не должен закрывать ActionBar. В том же шаблонном приложении (да и во многих туториалах) при открытии/закрытии меню всегда меняется title + иконка

1-2) Затем, что в библиотеке уже все реализовано по последним гайдам и нужно просто добавить необходимые элементы для того чтобы всё было как нужно. В Android Studio же лежит неактуальный шаблон.
3) Так было раньше, по новым гайдам Navigation Drawer перекрывает всё.
Да, вы верно на все ответили. Добавлю, что Google многих удивил своей непоследовательностью в подходах к работе с Navigation Drawer. Например, долго рекламировали значок, который красиво преобразуетя из «гамбургера» в «стрелку назад». По последним же гайдлайнам, он скрывается за Drawer'ом (хотя, если приглядеться, вы увидите часть анимации).
Согласен, перекрытие анимации иконки как то нелогично выглядит совсем.
Ну, это не большая проблема. У гугла, судя по их программам, какого-то определенного мнения нету. Со стандартным drawer-ом прокатывает marginTop="?attr/actionBarSize" — и перекрытия нету. Если так хочется показать анимацию.
Понятно, что это решаемо, но привычка то осталась) Гугл вроде старается все к единому стилю привести, то есть у Gmail, Inbox, Keep, Play Market, Play Music Navigation Drawer везде перекрывает ActionBar.
А в Google Drive, Google Calendar, Фото не перекрывается. И поди их пойми) Google никогда строгостью к дизайну не отличался.
Действительно, вы правы, я то уже подумал, что наконец гугл начал делать приложения в одном стиле, а вот нет.
на Nexus 5 Android 5.0.1 в Календаре и Диске перекрывается Action Bar, но не перекрывается Status Bar. В «Фото», да, даже Action Bar не перекрывается. Может быть просто не успели обновить приложение?
скрины

Возможно, Google для данных приложений использует Multiple APK Support и мы видим просто разные apk… Так или иначе, на Lollipop сейчас только одно исключение из правила «перекрывать Action Bar» в гугловых сервисах, надеюсь, они его скоро обновят, чтоб своим же гайдлайнам соответствовать.
В общем, попробовал эту либу. С какой радости она оверрайдит цвета, заданные в теме как primary, primaryDark и т. д? Оказалось, чтобы использовались мои цвета, надо называть их определенным образом. А если у меня несколько тем? В общем, либа написана… нехорошо.
вам просто нужно переопределить цвета в colors.xml приложения
например, вот так
  <color name="material_drawer_primary">#4BAE4F</color>
    <color name="material_drawer_primary_dark">#378D3B</color>
    <color name="material_drawer_primary_light">#C8E5C9</color>
    <color name="material_drawer_accent">#FE5621</color>

    <color name="material_drawer_background">#303030</color>
    <color name="material_drawer_icons">#000</color>
    <color name="material_drawer_primary_text">#FFF</color>
    <color name="material_drawer_secondary_text">#DEDEDE</color>
    <color name="material_drawer_hint_text">#ABABAB</color>
    <color name="material_drawer_contrast_text">#000</color>
    <color name="material_drawer_divider">#555555</color>
    <color name="material_drawer_selected">#262626</color>

Нет, вы не поняли, то, что называть цвета нужно только так и не иначе, я понял. Но если мне надо иметь возможность создать несколько тем? К примеру, дневную, ночную в нескольких вариациях (с оранжевым, синим и зеленым toolbar-ом)? Так я могу сделать N тем, с parent=«BaseAppTheme» и у каждой задать colorPrimary, colorAccent и другие, и одной строчкой в коде между ними переключаться. А с этой либой так не пойдет, по-моему.
хм, ну вы можете переехать темы либы темами вашего приложения. Я так понял, в либе темы исключительно как примеры для наглядности.
Ну смотрите, у меня в тестовом приложении была одна тема:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/color_primary</item> //названы цвета не так, как в примере
        <item name="colorPrimaryDark">@color/color_primary_dark</item>
        <item name="colorAccent">@color/color_accent</item>
    </style>

И для toolbar-а было задано android:background="?attr/colorPrimary". При использовании обычного Navigation Drawer-а цвет берется с моей темы, но после того как в коде описанному в посте drawer-у присваивается параметр .withToolbar(getToolbar()), colorPrimary чудесным образом перенаправляется на голубой, захардкоренный в либе. Только после переименования всех цветов начало использовать мои цвета. Но если мне надо, скажем, 3 главных цвета и переключаться между ними, тут абсолютно непонятно, как действовать, ибо параметры, заданные в темах, по сути, игнорируются.
Я сильно не ковырялся, может, что-то с этим и можно сделать, но то, что каждый, пытающийся написать свой drawer, начинает городить огород, очень смущает.
Я согласен с вами, по сути, сколько библиотек — столько и огородов. Кому-то подходит, кому-то нет.
В итоге, я дополню пост списком библиотек-аналогов и упомяну, что четкие парни пишут «под себя» :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации