(安卓APP)利用NavigationView做的侧滑菜单案例

来源:互联网 发布:网络授课平台 编辑:程序博客网 时间:2024/06/15 12:06

首先,在 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.DrawerLayoutxmlns: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);        //处理navigationheaderview的点击事件        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实现标题栏的侧滑,后续的可以直接设置跳转到你所需要的界面,或者你实现的功能里面。








阅读全文
0 0
原创粉丝点击