(安卓APP)利用NavigationView做的侧滑菜单案例
首先,在 Android stuio 创建一个new project (这里名字自己取)
然后,在build.gradle(moudule:app)dependencies里面添加依赖 compile'com.android.support:design:25+' (或者自己通过file-->project structure-->dependencies-->搜索design,z之后找到你电脑匹配的SDK版本添加)
接下来先把布局写好。
activity.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/scenery" tools:context="com.example.administrator.navigationview.MainActivity"> <android.support.design.widget.NavigationView android:id="@+id/navigationview" android:layout_height="match_parent" android:layout_width="wrap_content" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/my_drawer_header"//这是自己添加的一个布局 app:menu="@menu/my_drawer_view"/>//在自己创建的menu包里面写的一个view </android.support.v4.widget.DrawerLayout>这里我在DrawerLayout里面嵌套了一个NavigationView......
my_drawer_header.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background= "@drawable/travel" android:layout_height="150dp" android:orientation="vertical"> <TextView android:textSize="20sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="so beautifu!"/> </LinearLayout>
my_drawer_view.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title=" 主标题" /> <group android:checkableBehavior="single"> <item android:id="@+id/nav_item_1" android:icon="@drawable/monkey" android:title="标题1" /> <item android:id="@+id/nav_item_2" android:icon="@drawable/monkey" android:title="标题2" /> </group> <item android:title="副标题"> <menu> <item android:id="@+id/nav_sub_1" android:icon="@drawable/monkey" android:title="标题3" /> <item android:id="@+id/nav_sub_2" android:icon="@drawable/monkey" android:title="标题4" /> </menu> </item> </menu>
MainActivity.java
import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); NavigationView navigationView = (NavigationView) findViewById(R.id.navigationview); //处理navigation中headerview的点击事件 View v = navigationView.getHeaderView(0); Log.i("Tag", "v=" + v);//这个是测试数据 v.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {//点击标题Toast标题信息 Toast.makeText(MainActivity.this, "headerview.v=" + v, Toast.LENGTH_SHORT).show(); } }); //处理navigationView中菜单点击事件 navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) {//下面的我是Toast一下,可以直接按照你的需求填写 case R.id.nav_item_1: Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show(); break; case R.id.nav_item_2: Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show(); break; case R.id.nav_sub_1: Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show(); break; case R.id.nav_sub_2: Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show(); break; } return true; } }); } }这只是一个简单的利用Navigation实现标题栏的侧滑,后续的可以直接设置跳转到你所需要的界面,或者你实现的功能里面。