Страница 1 из 1
Navigation Drawer
Добавлено: 07 авг 2013, 10:06
avshelestov
Всем привет.
Собственно встала задача подключить к уже готовому приложению Navigation Drawer.
Собственно как я понял план работы получается следующий:
1. Сделать одну уктивити с drawer.
2. Все активити, у которых будет drawer переписать в фрагменты.
3. При навигации через drawer подгружать нужный фрагмент в фрейм главной активити.
И еще. Drawer поддерживает костомизацию или там может быть только один ListView?
Re: Navigation Drawer
Добавлено: 07 авг 2013, 14:09
Foenix
Почитала. Хорошая штука. Только нигде там не увидела, что теперь все приложение должно состоять из фрагментов. Обычная навигация, обычное меню - делай там что хочешь (есть некоторые правила, описанные тут
http://developer.android.com/design/pat ... rawer.html в картинках, но не более). Не рекомендуют делать там экшены, а навигацию пожалуйста, любую..
Все что туда можно помещать описано по ссылке. Это список команд, плюс подпункты тоже поддерживаются, и можно картиночку сделать. Все.
Re: Navigation Drawer
Добавлено: 07 авг 2013, 14:26
avshelestov
Foenix писал(а):Почитала. Хорошая штука. Только нигде там не увидела, что теперь все приложение должно состоять из фрагментов.
Ну как же по ссылке:
http://developer.android.com/training/i ... rawer.html
Сразу создается лайоут с фреймом для контента и списком для навигации.
Не создавать же такой для каждого активити. Дублирование кода получится.
Re: Navigation Drawer
Добавлено: 07 авг 2013, 14:35
Foenix
ничего ен понимаю, ну и что, это лэйаут для Drawer
у активити свой инфлейтится setContentView(R.layout.activity_main);
Re: Navigation Drawer
Добавлено: 07 авг 2013, 14:40
avshelestov
Неа.
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>
Re: Navigation Drawer
Добавлено: 07 авг 2013, 14:47
Finch
Беда с тобой Инна =)
Re: Navigation Drawer
Добавлено: 07 авг 2013, 14:50
Foenix
Это у них в примере так
What you do in the onItemClick() method depends on how you've implemented your app structure.
т.е. в onItemClick() можно писать любой, какой угодно код, а не подставлять только лишь фрагменты.
Re: Navigation Drawer
Добавлено: 07 авг 2013, 14:55
avshelestov
Я не говорил, что в onclick можно только фрагменты подставлять.
Просто они так же рекомендуют делать главный лейаут с drawer и framelayout, в который впендюривать фрагменты.
Re: Navigation Drawer
Добавлено: 07 авг 2013, 15:00
Foenix
они не рекомендуют, у них пример такой.
Re: Navigation Drawer
Добавлено: 07 авг 2013, 15:06
avshelestov
Foenix писал(а):они не рекомендуют, у них пример такой.
Ок. Тогда в каждый лейоут активити прийдется копировать drawer?
Re: Navigation Drawer
Добавлено: 07 авг 2013, 15:11
avshelestov
Ладно всем спасибо.
Пока решил все же не переписывать все на фрагменты, а проинклудить drawer в layout каждой активити с помощью <include />.
Re: Navigation Drawer
Добавлено: 07 авг 2013, 15:15
Foenix
разобраться нужно в этом, может я себе тоже тако йреализую, штука интересная.
и ничего плохого в том, чтоб делать эту штуку в каждом лэйауте, у мен яво всяком случае много активити, и они зависимые друг от друга (типа такого только сложнее
http://developer.android.com/design/med ... n_hubs.png отсюда
http://developer.android.com/design/pat ... rawer.html) поэтому если делать навигацию в нем (что очень удобно) нужно содержимое этой штуки менять.
Re: Navigation Drawer
Добавлено: 07 авг 2013, 15:17
Foenix
avshelestov писал(а):Ладно всем спасибо.
Пока решил все же не переписывать все на фрагменты, а проинклудить drawer в layout каждой активити с помощью <include />.
я этот include пробовала, хорошая штука, но мне так и не удалось побороть парочку глюков, из-за которых невозможно было ею пользоваться (в моем случае некоторые настройки, типа выравнивания по правому краю, не хотели устанавливаться).
Re: Navigation Drawer
Добавлено: 07 авг 2013, 15:27
avshelestov
Сегодня попробую.
У меня обратная ситуация. Меню навешивается примерно на 8 activities и везде оно будет идентично, кроме выделения текущего пункта.
А я, как ярый противник любого дублирования кода, не люблю его дублировать )))
Re: Navigation Drawer
Добавлено: 07 авг 2013, 15:30
Foenix
покажи потом как получилось
у тебя активити получаются - равноправные, верхнего уровня?
Re: Navigation Drawer
Добавлено: 07 авг 2013, 17:17
avshelestov
Foenix писал(а):покажи потом как получилось
у тебя активити получаются - равноправные, верхнего уровня?
Те, что будут с меню да.
Re: Navigation Drawer
Добавлено: 07 авг 2013, 17:32
avshelestov
Решил двигаться в сторону фрагментов.
Иначе вырисовывается жуткий говнокод.
Да и попытка вставить drawer в обычных layout натыкается на ошибку невозможности совмещения DrawerLayout с RelativeLayout в одном layout-е.
Так, что оценив все за и против, решил остановится на фрагментах, да и давно пора на фрагменты переходить.
Если я в чем то не прав, буду рад выслушать замечания.
Re: Navigation Drawer
Добавлено: 07 авг 2013, 19:10
Foenix
Я так понимаю его нельзя включить в обычный layout, он должен быть верхним уровнем, а все layout-ы внутри. Т.е. как в примере с фрагментами у них, но вместо framelayout нужно вставить свой бывший любой layout activity.
Re: Navigation Drawer
Добавлено: 07 авг 2013, 19:16
avshelestov
Foenix писал(а):Я так понимаю его нельзя включить в обычный layout, он должен быть верхним уровнем, а все layout-ы внутри. Т.е. как в примере с фрагментами у них, но вместо framelayout нужно вставить свой бывший любой layout activity.
Пробовал. Ругается на несовместимость с relativelayout.
Отложил на будущее. Т.к. ради этого меню прийдется всю структуру приложения пересмотреть.
