Android Material Design:NavigationView抽屉导航菜单以及

需要添加的包:

 

测试代码:

package com.zzw.navigationview;

import android.app.Activity;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.design.widget.NavigationView.OnNavigationItemSelectedListener;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class MainActivity extends Activity {

    private DrawerLayout drawerLayout;
    private ImageView imageView;
    private NavigationView navigationView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
        // navigationView选中Item处理
        handNavigationView();
        
        findViewById(R.id.button).setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                
                drawerLayout.openDrawer(GravityCompat.START);  
            }
        });
    }

    private void handNavigationView() {
        navigationView
                .setNavigationItemSelectedListener(new OnNavigationItemSelectedListener() {

                    // 用于辨别此前是否已有选中条目
                    MenuItem preMenuItem;

                    @Override
                    public boolean onNavigationItemSelected(MenuItem menuItem) {
                        // 首先将选中条目变为选中状态
                        // 即checked为true,后关闭Drawer,以前选中的Item需要变为未选中状态
                        if (preMenuItem != null)
                            preMenuItem.setChecked(false);
                        menuItem.setChecked(true);
                        drawerLayout.closeDrawers();
                        preMenuItem = menuItem;

                        // 不同item对应不同图片
                        switch (menuItem.getItemId()) {
                        case R.id.navigation_item1:
                            imageView.setImageResource(R.mipmap.bg_one);
                            break;
                        case R.id.navigation_item2:
                            imageView.setImageResource(R.mipmap.bg_two);
                            break;
                        case R.id.navigation_item3:
                            imageView.setImageResource(R.mipmap.bg_three);
                            break;
                        case R.id.navigation_sub_item1:
                            imageView.setImageResource(R.mipmap.bg_four);
                            break;
                        case R.id.navigation_sub_item2:
                            imageView.setImageResource(R.mipmap.bg_five);
                            break;
                        case R.id.navigation_sub_item3:
                            imageView.setImageResource(R.mipmap.bg_default);
                            break;
                        }
                        return true;
                    }
                });
    }

    private void initView() {
        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        imageView = (ImageView) findViewById(R.id.image);
        navigationView = (NavigationView) findViewById(R.id.navigation);
    }

}

activity_main.xml:


<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" >

    <!-- 主界面 -->

    <RelativeLayout
        android:id="@+id/parent_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <ImageView
            android:id="@+id/image"
            android:layout_width="match_parent"
            android:layout_height="400dp"
            android:layout_centerInParent="true"
            android:padding="5dp"
            android:src="@mipmap/bg_default" />

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:paddingBottom="5dip"
            android:text="点击" />

        <!-- app:itemIconTint 设置菜单图标颜色   app:itemTextColor设置菜单字体颜色  -->
    </RelativeLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/drawer_header"
        app:itemIconTint="#2196F3"
        app:itemTextColor="#3F51B5"
        app:menu="@menu/drawer_menu" >
    </android.support.design.widget.NavigationView>

</android.support.v4.widget.DrawerLayout>

drawer_header.xml:


<?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="180dp"
    android:background="@mipmap/bg_header"
    android:paddingBottom="15dp"
    android:paddingLeft="20dp" >

    <ImageView
        android:id="@+id/photo"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_above="@+id/desc"
        android:layout_marginBottom="20dp"
        android:src="@mipmap/photo" />

    <TextView
        android:id="@+id/desc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="2dp"
        android:text="www.cnblogs.com/zzw1994"
        android:textColor="#ffffff"
        android:textSize="20sp"
        android:textStyle="bold" />

</RelativeLayout>

drawer_menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <group>
        <item
            android:id="@+id/navigation_item1"
            android:checkable="true"
            android:icon="@mipmap/icon_hot"
            android:title="热门图片"/>
        <item
            android:id="@+id/navigation_item2"
            android:checkable="true"
            android:icon="@mipmap/icon_people"
            android:title="联系人"/>
        <item
            android:id="@+id/navigation_item3"
            android:checkable="true"
            android:icon="@mipmap/icon_photos"
            android:title="图库"/>
    </group>

    <item
        android:id="@+id/navigation_sub"
        android:title="新增功能">
        <menu>
            <item
                android:id="@+id/navigation_sub_item1"
                android:checkable="true"
                android:icon="@mipmap/icon_local"
                android:title="地图导航"/>
            <item
                android:id="@+id/navigation_sub_item2"
                android:checkable="true"
                android:icon="@mipmap/icon_event"
                android:title="最近热门"/>
            <item
                android:id="@+id/navigation_sub_item3"
                android:checkable="true"
                android:icon="@mipmap/icon_communities"
                android:title="社交圈子"/>
        </menu>
    </item>

</menu>

注意主题:

 

<style name="DemoTheme" parent="Theme.AppCompat.Light.NoActionBar">
    </style>

 

 

 

<application
        
        android:theme="@style/DemoTheme" >
       
    </application>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值