我们正在制作Android应用,我们想要添加一些东西。 这是Gmail应用程序的效果。
您可以选择要查看的帐户(应用程序的其余部分也会相应地显示)。
修改
我现在已经有了一个(工作)导航栏,但我想要的是标题中的圆形图标。我希望有人能够选择他们正在查看的用户。
答案 0 :(得分:25)
您可以使用com.android.support:design
支持库中的NavigationView
来实现您想要的效果。
您可以找到here的完整教程。您可以从该教程here下载完整的源代码。
您可以关注here's another nice tutorial。
但长话短说,该视图分为两个主要部分:标题和菜单部分,以及您必须在XML上定义的每个部分。
从该教程开始:
标题视图
此视图基本上是导航的顶部 抽屉,其中包含个人资料图片,姓名和电子邮件等。您需要 要在一个单独的布局文件中定义它,我们将调查它 只是片刻。
菜单
这是您要在标题下方显示的菜单,我们定义 菜单文件夹中的菜单,就像您为溢出定义菜单一样 菜单。所以基本上NavigationView是Header View的容器 和您将在滑动抽屉中使用的菜单。所以现在 您了解NavigationView我们可以开始构建我们的 导航抽屉。
考虑到这一点,像对待任何其他布局一样构建标题。菜单的定义有点像工具栏/操作栏菜单。 e.g:
<强> 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
的内容切换这些配置文件。
这些教程将帮助您完成该步骤:
在标题上进行设置后,请处理项目选择并相应更改用户个人资料。 (最后一部分完全取决于您如何在应用程序上实现用户配置文件)。但作为先行者,您可以查看android training site,更具体地说,this part。
答案 1 :(得分:3)
您应该使用 NavigationView
它提供了易于实现材料导航的框架 抽屉借助菜单中的导航项目 资源。 Befor Navigation View,我们很难制作材料 导航抽屉使用listview或linearlayout与自定义适配器, 但现在我们只需要在DrawerLayout中添加导航视图, 其他一切都将由导航视图处理。
<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>
对于此要求,您可以查看样本
<强> Playing with NavigationView 强>
希望这有帮助。
答案 2 :(得分:1)
我认为这MaterialDrawer正是您所寻找的。这个库有很多例子。您可以直接使用此库,也可以阅读源代码并实现自己的抽屉。
答案 3 :(得分:0)
您可以使用MaterialNavigation库实现此Material Navigation抽屉。 有关实施的文章为here。
您只需要导入该库就可以了。请参阅以下网站上的演示代码:。
https://github.com/PatilShreyas/MaterialNavigationView-Android