侧滑菜单(二)NavigationView的简单使用
来源:互联网 发布:draw9patch mac 编辑:程序博客网 时间:2024/06/05 05:56
上一次我们使用了DrawerLayout来实现侧滑,http://blog.csdn.net/sinat_35159441/article/details/77249450,现在我们在上次的基础上,使用DrawerLayout结合NavigationView来实现侧滑菜单。
先看效果:
步骤如下:
一:在gradle中进行配置
因为NavigationView是design包下的,所有我们要在gradle中引入这个包。
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:design:24.2.1' testCompile 'junit:junit:4.12' compile 'de.hdodenhof:circleimageview:2.1.0'}
二:在布局文件中引入NavigationView
布局文件如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="50dp" android:background="?attr/colorPrimary" app:title="侧滑菜单" /> <android.support.v4.widget.DrawerLayout android:id="@+id/drawlayout" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.NavigationView android:id="@+id/navi" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:menu="@menu/navi_menu" app:headerLayout="@layout/head_layout" > </android.support.design.widget.NavigationView> <TextView android:background="@color/colorPrimary" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是主界面"/> </android.support.v4.widget.DrawerLayout></LinearLayout>
可以看到NavigationView的根标签下有两个属性 app:menu=”@menu/navi_menu”
app:headerLayout=”@layout/head_layout”
意思是指定侧滑菜单中的头和菜单和下方的菜单,我们从上面的效果图可以看到侧滑菜单分为了两部分,上面的头和下面的菜单。分别指定其资源文件即可。
2.1、head的布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="30dp"> <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/image" android:layout_width="100dp" android:layout_height="100dp" android:layout_centerVertical="true" android:src="@drawable/photo" /> <TextView android:id="@+id/name" android:layout_centerVertical="true" android:layout_toRightOf="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="UserName:hmc" /> <TextView android:layout_toRightOf="@+id/image" android:layout_centerHorizontal="true" android:layout_below="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Mail:121.com" /></RelativeLayout>
2.2、menu的布局文件
创建文件res–>menu–>navi_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/call" android:icon="@drawable/nav_call" android:title="Call" /> <item android:id="@+id/friends" android:icon="@drawable/nav_friends" android:title="Friends" /> <item android:id="@+id/location" android:icon="@drawable/nav_call" android:title="Call" /> <item android:id="@+id/Mail" android:icon="@drawable/nav_mail" android:title="Call" /> <item android:title="其他"> <menu> <item android:id="@+id/setting" android:icon="@drawable/ic_dashboard" android:title="设置" /> <item android:id="@+id/about" android:icon="@drawable/ic_event" android:title="关于我们" /> </menu> </item> </group></menu>
可以看到item里面还可以嵌套menu,实现的效果可见上面的效果图,以一条横线来区分一般的item和嵌套menu的item。
三:代码实现、
public class MainActivity extends AppCompatActivity { Toolbar toolbar; ActionBarDrawerToggle toggle; DrawerLayout drawerLayout; NavigationView navi; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); drawerLayout = (DrawerLayout) findViewById(R.id.drawlayout); navi = (NavigationView) findViewById(R.id.navi); //固定写法,让侧滑的开关与侧滑状态进行绑定 toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close); toggle.syncState(); drawerLayout.addDrawerListener(toggle); //修改默认显示的icon ActionBar ab = getSupportActionBar(); ab.setHomeAsUpIndicator(R.drawable.nav_mail); ab.setDisplayHomeAsUpEnabled(true);//修改默认选中的条目//navi.setCheckedItem(R.id.friends);//子条目的点击事件 navi.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.location: break; } drawerLayout.closeDrawers(); return true; } }); }}
需要注意的有两点:默认显示的三条横杠是可以自定义的,可以设置自条目的点击事件。
阅读全文
0 0
- 侧滑菜单(二)NavigationView的简单使用
- 侧滑菜单的简单实现(DrawerLayout+Toolbar+NavigationView)
- 侧滑菜单NavigationView和SlidingMenu的使用
- Material Design之侧滑菜单DrawerLayout+NavigationView的使用
- NavigationView侧滑菜单 使用教程
- NavigationView的简单使用
- NavigationView的简单使用
- Android 侧滑菜单的实现(NavigationView)
- 151228 侧滑菜单:Drawerlayout和ActionBar 一起使用的,侧滑菜单:SlidingPaneLayout,NavigationView,TabLayout
- NavigationView 实现侧滑菜单 改变菜单颜色的属性
- 侧滑菜单 Drawerlayout navigationView
- NavigationView原生侧滑菜单
- NavigationView+DrawerLayout 侧滑菜单
- Android5.0之NavigationView的使用 。android组件之DrawerLayout(抽屉导航)-- 侧滑菜单效果
- 学习使用NavigationView,实现QQ侧滑菜单
- 抽屉菜单与侧滑菜单. NavigationView
- 侧滑菜单 drawerlayout 与 NavigationView
- Iwfu-NavigationView实现侧滑菜单
- Regionals 2016 :: Asia
- JQuery操作复选框checkbox技巧总结之 ---- 设置选中、取消选中、获取被选中的值、判断是否选中等
- java之单例(懒汉式、饿汉式)
- 刚体模拟中cfm的小应用
- Springboot学习相关
- 侧滑菜单(二)NavigationView的简单使用
- cmake和make区别(转载)
- Flash AS3)用图片绘制线段,lineBitmapStyle
- Kconfig语法详解
- 遍历二叉树
- Spring Cloud与微服务学习总结(2)——Spring Cloud相较于Dubbo等RPC服务框架的优势
- MVC设计模式探秘
- C#excelpackage读写Excel文件
- 简单的给PopupWindow增加半透明的背景。