溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用DrawerLayout和NavigationView實現側滑菜單欄的效果

發布時間:2021-07-21 14:48:21 來源:億速云 閱讀:295 作者:小新 欄目:移動開發

小編給大家分享一下怎么使用DrawerLayout和NavigationView實現側滑菜單欄的效果,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

效果如下:

怎么使用DrawerLayout和NavigationView實現側滑菜單欄的效果

Layout布局

<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”>
 <android.support.design.widget.NavigationView
 android:id=“@+id/navigation_view”
 android:layout_width=“wrap_content”
 android:layout_height=“match_parent”
 android:layout_gravity=“start”
 app:headerLayout=“@layout/navigation_header”
 app:menu=“@menu/drawer” />
</android.support.v4.widget.DrawerLayout>

NavigationView需要設置app:headerLayout 和 app:menu,headerLayout對應菜單的上面部分,一般用來顯示用戶信息,menu則對應實際的菜單項文件。

headerLayout

<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="192dp"
 android:background="?attr/colorPrimaryDark"
 android:gravity="center"
 android:orientation="vertical"
 android:padding="16dp"
 android:theme="@style/ThemeOverlay.AppCompat.Dark">

 <de.hdodenhof.circleimageview.CircleImageView
 android:id="@+id/profile_image"
 android:layout_width="72dp"
 android:layout_height="72dp"
 android:layout_marginTop="20dp"
 android:src="@mipmap/profile"
 app:border_color="@color/primary_light"
 app:border_width="2dp" />

 <TextView
 android:layout_marginTop="10dp"
 android:textSize="18sp"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="APP開發者"
 android:gravity="center"
 android:textAppearance="@style/TextAppearance.AppCompat.Body1"
  />

</LinearLayout>

menu

<menu xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 tools:context=".MainActivity">
 <group android:checkableBehavior="single">
 <item
  android:id="@+id/navigation_item_example"
  android:icon="@drawable/ic_favorite"
  android:title="@string/navigation_example" />
 <item
  android:id="@+id/navigation_item_blog"
  android:icon="@drawable/ic_favorite"
  android:title="@string/navigation_my_blog" />

 <item
  android:id="@+id/navigation_item_about"
  android:icon="@drawable/ic_favorite"
  android:title="@string/navigation_about" />
 </group>
</menu>

代碼實現

ActionBarDrawerToggle可以配合Toolbar,實現Toolbar上菜單按鈕開關效果。

 //設置Toolbar
 mToolbar = (Toolbar) findViewById(R.id.toolbar);
 setSupportActionBar(mToolbar);

//設置DrawerLayout
 mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
 mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, 
     R.string.drawer_open, R.string.drawer_close);  
 mDrawerToggle.syncState();
 mDrawerLayout.setDrawerListener(mDrawerToggle);
//設置NavigationView點擊事件
 mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
 setupDrawerContent(mNavigationView);
 //設置NavigationView點擊事件
private void setupDrawerContent(NavigationView navigationView) {
 navigationView.setNavigationItemSelectedListener(
  new NavigationView.OnNavigationItemSelectedListener() {
   @Override
   public boolean onNavigationItemSelected(MenuItem menuItem) {
   switch (menuItem.getItemId()) {
    case R.id.navigation_item_example:
    switchToExample();
    break;
    case R.id.navigation_item_blog:
    switchToBlog();
    break;
    case R.id.navigation_item_about:
    switchToAbout();
    break;

   }
   menuItem.setChecked(true);
   mDrawerLayout.closeDrawers();
   return true;
   }
  });
 }

看完了這篇文章,相信你對“怎么使用DrawerLayout和NavigationView實現側滑菜單欄的效果”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女