抽屉控件NavigationView的添加

178 阅读1分钟

#抽屉控件NavigationView的添加:(来源:github)

图示:

1.activity_main.xml

添加跟布局:

<android.support.v4.widget.DrawerLayout
    android:id="@+id/main_draw_layout"
    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">
    
    //------------------------------------------------------
    //   中间布局
    //-----------------------------------------------------
    
    <!-- 抽屉控件The navigation drawer -->
<android.support.design.widget.NavigationView
    android:id="@+id/left_draw"
    android:layout_width="300dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#fff"
    app:menu="@menu/activity_main_drawer"
    />
</android.support.v4.widget.DrawerLayout>

2.MainActivity.java

/**
 *  a.初始化抽屉按钮
 */
private void initDrawerView() {
    mainDrawLayout = (DrawerLayout) findViewById(R.id.main_draw_layout);
    leftDraw = (NavigationView) findViewById(R.id.left_draw);

    View view=leftDraw.inflateHeaderView(R.layout.activity_view_nav_header_main);

    leftDraw.setNavigationItemSelectedListener(this);
}

b.抽屉的监听

/**
 * 抽屉控件的选择监听
 * @param item
 * @return
 */
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    //抽屉控件的选中实现
    int id = item.getItemId();
    switch (id) {
        case R.id.nav_daily_read:
          // startActivity(new Intent(MainActivity.this,     DailyActivity.class));
            Toast.makeText(this,"每日一文",Toast.LENGTH_SHORT).show();
            break;
        case R.id.nav_gank:
            startActivity(new Intent(MainActivity.this, MeizhiActivity.class));
            Toast.makeText(this,"妹纸",Toast.LENGTH_SHORT).show();
            break;
        case R.id.nav_home_recommend:
            startActivity(new Intent(MainActivity.this, ReDailyActivity.class));
            Toast.makeText(this,"每日推荐",Toast.LENGTH_SHORT).show();
            break;
        case R.id.nav_setting:
              //startActivity(new Intent(MainActivity.this, AboutActivity.class));
            Toast.makeText(this,"关于",Toast.LENGTH_SHORT).show();
            break;
        case R.id.nav_stars:
             // startActivity(new Intent(MainActivity.this, FavListActivity.class));
            Toast.makeText(this,"我的收藏",Toast.LENGTH_SHORT).show();
            break;
    }
    return true;
}

c.关闭抽屉

//  返回按键
private long exitTime = 0;

@Override
public void onBackPressed() {
    if (mainDrawLayout.isDrawerOpen(GravityCompat.START)) {
        mainDrawLayout.closeDrawer(GravityCompat.START);
    } else {
        if (System.currentTimeMillis() - exitTime > 2000) {
            Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        } else {
            super.onBackPressed();
        }
    }
}