Navigation Drawer

Интерфейс, диалоги, темы, стили, меню
Ответить
Аватара пользователя
avshelestov
Сообщения: 61
Зарегистрирован: 31 окт 2012, 18:51

Navigation Drawer

Сообщение avshelestov » 07 авг 2013, 10:06

Всем привет.

Собственно встала задача подключить к уже готовому приложению Navigation Drawer.
Собственно как я понял план работы получается следующий:
1. Сделать одну уктивити с drawer.
2. Все активити, у которых будет drawer переписать в фрагменты.
3. При навигации через drawer подгружать нужный фрагмент в фрейм главной активити.

И еще. Drawer поддерживает костомизацию или там может быть только один ListView?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Navigation Drawer

Сообщение Foenix » 07 авг 2013, 14:09

Почитала. Хорошая штука. Только нигде там не увидела, что теперь все приложение должно состоять из фрагментов. Обычная навигация, обычное меню - делай там что хочешь (есть некоторые правила, описанные тут http://developer.android.com/design/pat ... rawer.html в картинках, но не более). Не рекомендуют делать там экшены, а навигацию пожалуйста, любую..
Все что туда можно помещать описано по ссылке. Это список команд, плюс подпункты тоже поддерживаются, и можно картиночку сделать. Все.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
avshelestov
Сообщения: 61
Зарегистрирован: 31 окт 2012, 18:51

Re: Navigation Drawer

Сообщение avshelestov » 07 авг 2013, 14:26

Foenix писал(а):Почитала. Хорошая штука. Только нигде там не увидела, что теперь все приложение должно состоять из фрагментов.
Ну как же по ссылке:
http://developer.android.com/training/i ... rawer.html
Сразу создается лайоут с фреймом для контента и списком для навигации.
Не создавать же такой для каждого активити. Дублирование кода получится.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Navigation Drawer

Сообщение Foenix » 07 авг 2013, 14:35

ничего ен понимаю, ну и что, это лэйаут для Drawer
у активити свой инфлейтится setContentView(R.layout.activity_main);
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
avshelestov
Сообщения: 61
Зарегистрирован: 31 окт 2012, 18:51

Re: Navigation Drawer

Сообщение avshelestov » 07 авг 2013, 14:40

Неа.
R.layout.activity_main это и есть:

Код: Выделить всё

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <!-- The navigation drawer -->
    <ListView android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: Navigation Drawer

Сообщение Finch » 07 авг 2013, 14:47

Беда с тобой Инна =)
CEO of a company R.id.team

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Navigation Drawer

Сообщение Foenix » 07 авг 2013, 14:50

Это у них в примере так
What you do in the onItemClick() method depends on how you've implemented your app structure.
т.е. в onItemClick() можно писать любой, какой угодно код, а не подставлять только лишь фрагменты.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
avshelestov
Сообщения: 61
Зарегистрирован: 31 окт 2012, 18:51

Re: Navigation Drawer

Сообщение avshelestov » 07 авг 2013, 14:55

Я не говорил, что в onclick можно только фрагменты подставлять.
Просто они так же рекомендуют делать главный лейаут с drawer и framelayout, в который впендюривать фрагменты.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Navigation Drawer

Сообщение Foenix » 07 авг 2013, 15:00

они не рекомендуют, у них пример такой.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
avshelestov
Сообщения: 61
Зарегистрирован: 31 окт 2012, 18:51

Re: Navigation Drawer

Сообщение avshelestov » 07 авг 2013, 15:06

Foenix писал(а):они не рекомендуют, у них пример такой.
Ок. Тогда в каждый лейоут активити прийдется копировать drawer?

Аватара пользователя
avshelestov
Сообщения: 61
Зарегистрирован: 31 окт 2012, 18:51

Re: Navigation Drawer

Сообщение avshelestov » 07 авг 2013, 15:11

Ладно всем спасибо.
Пока решил все же не переписывать все на фрагменты, а проинклудить drawer в layout каждой активити с помощью <include />.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Navigation Drawer

Сообщение Foenix » 07 авг 2013, 15:15

разобраться нужно в этом, может я себе тоже тако йреализую, штука интересная.
и ничего плохого в том, чтоб делать эту штуку в каждом лэйауте, у мен яво всяком случае много активити, и они зависимые друг от друга (типа такого только сложнее http://developer.android.com/design/med ... n_hubs.png отсюда http://developer.android.com/design/pat ... rawer.html) поэтому если делать навигацию в нем (что очень удобно) нужно содержимое этой штуки менять.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Navigation Drawer

Сообщение Foenix » 07 авг 2013, 15:17

avshelestov писал(а):Ладно всем спасибо.
Пока решил все же не переписывать все на фрагменты, а проинклудить drawer в layout каждой активити с помощью <include />.
я этот include пробовала, хорошая штука, но мне так и не удалось побороть парочку глюков, из-за которых невозможно было ею пользоваться (в моем случае некоторые настройки, типа выравнивания по правому краю, не хотели устанавливаться).
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
avshelestov
Сообщения: 61
Зарегистрирован: 31 окт 2012, 18:51

Re: Navigation Drawer

Сообщение avshelestov » 07 авг 2013, 15:27

Сегодня попробую.
У меня обратная ситуация. Меню навешивается примерно на 8 activities и везде оно будет идентично, кроме выделения текущего пункта.
А я, как ярый противник любого дублирования кода, не люблю его дублировать )))

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Navigation Drawer

Сообщение Foenix » 07 авг 2013, 15:30

покажи потом как получилось
у тебя активити получаются - равноправные, верхнего уровня?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
avshelestov
Сообщения: 61
Зарегистрирован: 31 окт 2012, 18:51

Re: Navigation Drawer

Сообщение avshelestov » 07 авг 2013, 17:17

Foenix писал(а):покажи потом как получилось
у тебя активити получаются - равноправные, верхнего уровня?
Те, что будут с меню да.

Аватара пользователя
avshelestov
Сообщения: 61
Зарегистрирован: 31 окт 2012, 18:51

Re: Navigation Drawer

Сообщение avshelestov » 07 авг 2013, 17:32

Решил двигаться в сторону фрагментов.
Иначе вырисовывается жуткий говнокод.
Да и попытка вставить drawer в обычных layout натыкается на ошибку невозможности совмещения DrawerLayout с RelativeLayout в одном layout-е.
Так, что оценив все за и против, решил остановится на фрагментах, да и давно пора на фрагменты переходить.

Если я в чем то не прав, буду рад выслушать замечания.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Navigation Drawer

Сообщение Foenix » 07 авг 2013, 19:10

Я так понимаю его нельзя включить в обычный layout, он должен быть верхним уровнем, а все layout-ы внутри. Т.е. как в примере с фрагментами у них, но вместо framelayout нужно вставить свой бывший любой layout activity.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
avshelestov
Сообщения: 61
Зарегистрирован: 31 окт 2012, 18:51

Re: Navigation Drawer

Сообщение avshelestov » 07 авг 2013, 19:16

Foenix писал(а):Я так понимаю его нельзя включить в обычный layout, он должен быть верхним уровнем, а все layout-ы внутри. Т.е. как в примере с фрагментами у них, но вместо framelayout нужно вставить свой бывший любой layout activity.
Пробовал. Ругается на несовместимость с relativelayout.
Отложил на будущее. Т.к. ради этого меню прийдется всю структуру приложения пересмотреть. :-)

Ответить