Эффект, который вы хотите, может быть достигнут с помощью 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.
Проверьте последние изменения и не забудьте пометить их как принятые, если это поможет. ;) – Mauker
Эй, извините, но, как вы добавили «1» справа? – Omer
@Omer Это скриншот из приложения Gmail. – Tvde1