2016-01-13 2 views
10

Мы делаем приложение для Android, и есть что-то, что мы хотим добавить. Какой эффект имеет приложение Gmail.Android-навигатор для Android, как приложение Gmail

Вы можете выбрать, какую учетную запись вы хотите просмотреть (и остальная часть приложения будет вести себя соответственно).

Example

EDIT:

я теперь уже есть (рабочий) панель навигации, но то, что я хочу, это круглые иконки в заголовке. Я хочу, чтобы кто-то мог выбрать пользователя, которого они просматривают.

+0

Проверьте последние изменения и не забудьте пометить их как принятые, если это поможет. ;) – Mauker

+0

Эй, извините, но, как вы добавили «1» справа? – Omer

+0

@Omer Это скриншот из приложения Gmail. – Tvde1

ответ

24

Эффект, который вы хотите, может быть достигнут с помощью NavigationView из библиотеки поддержки com.android.support:design.

Вы можете найти полный учебник по этому вопросу here. И вы можете загрузить полный исходный код из этого учебника here.

И here's another nice tutorial что вы могли бы следовать.

Но длинный рассказ короткий, этот вид разделен между двумя основными частями, заголовком и частью меню, и каждый из них вы должны определить в XML.

Как из этого урока:

Заголовок Вид

Эта точка зрения в основном верхняя часть навигации ящик, который содержит изображение профиля, имя и адрес электронной почты и т.д. Вы должны чтобы определить это в отдельном файле макета, мы рассмотрим это в всего лишь мгновение.

Меню

Это меню, которое вы хотите показать ниже вашего заголовок, мы определяем меню в папке меню, так же, как вы определяете меню для вашего меню переполнения . Таким образом, в основном NavigationView представляет собой контейнер для заголовка и меню, которое вы собираетесь использовать в своем скользящем ящике. Итак, теперь , что вы понимаете NavigationView, мы можем начать строить наш навигационный ящик .

Имея это в виду, создайте свой заголовок так же, как и с любым другим макетом. И меню определено несколько как меню панели инструментов/ActionBar. например .:

navigation_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <group 
     android:checkableBehavior="single"> 

     <item 
      android:id="@+id/drawer_home" 
      android:checked="true" 
      android:icon="@drawable/icon_home" 
      android:title="@string/title_home"/> 

     <item 
      android:id="@+id/drawer_content" 
      android:icon="@drawable/icon_content" 
      android:title="@string/title_content"/> 

     <item 
      android:id="@+id/drawer_about" 
      android:icon="@drawable/icon_about" 
      android:title="@string/title_about"/> 

     <item 
      android:id="@+id/drawer_exit" 
      android:icon="@drawable/icon_exit" 
      android:title="@string/title_exit"/> 

     </group> 
</menu> 

Затем на вашем Activity вы просто должны сделать макет, как один нашли в учебнике, используя DrawerLayout вместе с NavigationView.

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context=".MainActivity"> 

    <LinearLayout 
     android:layout_height="match_parent" 
     android:layout_width="match_parent" 
     android:orientation="vertical" 
     > 
     <include 
      android:id="@+id/toolbar" 
      layout="@layout/tool_bar"/> 
     <FrameLayout 
      android:id="@+id/frame" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

     </FrameLayout> 

    </LinearLayout> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/navigation_view" 
     android:layout_height="match_parent" 
     android:layout_width="wrap_content" 
     android:layout_gravity="start" 
     app:headerLayout="@layout/header" 
     app:menu="@menu/navigation_menu"/> 
</android.support.v4.widget.DrawerLayout> 

Вы также должны создать некоторые Fragments для каждого экрана вы хотите отобразить с этим NavigationView. После того, как вы сделали это, на ваш Activity вы можете обрабатывать событие выбора путем внедрения NavigationView.OnNavigationItemSelectedListener, например:

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { 
    // Your Activity 
     @Override 
    public boolean onNavigationItemSelected(MenuItem menuItem) { 
     Fragment fragment = null; 

     switch(menuItem.getItemId()) { 
      case R.id.drawer_home: 
       fragment = new YourFragment(); 
       break; 
      case R.id.drawer_content: 
       fragment = new AnotherFragment(); 
       break; 
      case R.id.drawer_about: 
       fragment = new AboutFragment(); 
       break; 
      case R.id.drawer_exit: 
       // TODO - Prompt to exit. 
       finish(); 
       break; 
     } 

     if (fragment == null) { 
      fragment = new YourFragment(); 
     } 

     drawerLayout.closeDrawers(); 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, fragment) 
        .commit(); 

     return true; 
    } 
} 

Как для редактирования, иконка может быть представлена ​​ImageView. И чтобы перемещаться между несколькими профилями, это зависит от того, как вы реализовали эту логику в своем приложении, но как «общий» ответ, вы можете переключать эти профили, используя что-то вроде Spinner.

Эти уроки помогут вам через этот шаг:

После того, как вы установили, что на вашем заголовке , обрабатывать t он выбирает пункт и соответственно меняет профиль пользователя. (Эта последняя часть полностью зависит от того, как вы реализовали профили пользователей в своем приложении). Но как раз в голову, вы можете проверить android training site, точнее, this part.

+0

Более совершенный ответ. Двигайтесь вперед #Mauker –

+0

@IntelliJAmiya что? Можете ли вы объяснить, что вы имеете в виду? – WarrenFaith

+0

Однажды я увидел сообщение в блоге, в котором рассмотрел шаблон NavigationView из Android Studio 1.4: http://androidessence.com/creating-a-material-design-navigation-drawer/ – AdamMc331

3

Вы должны использовать NavigationView

Это обеспечивает основу для легкого реализовать материал навигация ящика с помощью надуть элементы навигации по меню ресурса. Befor Navigation View, у нас есть трудный способ сделать материал навигационного ящика с использованием listview или linearlayout с пользовательским адаптером, , но теперь нам просто нужно добавить вид навигации в DrawerLayout, , все остальное будет обрабатываться Navigation View.

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <!-- Your contents --> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/navigation" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     app:menu="@menu/my_navigation_items" /> 
</android.support.v4.widget.DrawerLayout> 

Для этого требования Вы можете проверить образец

  1. MaterialDrawer

  2. How To Make Material Design Navigation Drawer

  3. Playing with NavigationView

Надеется, что это помогает.

0

Я думаю, что это MaterialDrawer - это то, что вы ищете. В этой библиотеке есть много примеров. Вы можете использовать эту библиотеку напрямую или прочитать исходный код и реализовать свой собственный ящик.

Смежные вопросы