簡體   English   中英

如何在打開相應的片段時隱藏導航抽屜項目

[英]How to hide navigation drawer item while the respective fragment is opened

在我的應用程序中,我使用了導航抽屜。 在這里,我列出了所有項目。

從圖片來看,物品是,

  • 過濾和排序
  • 願望清單
  • 店鋪
  • 我的訂單
  • 設置
  • 登出

如果我在Shop的 Fragment 中,我需要隱藏它。 這個怎么做?

請幫我。

在此處輸入圖像描述

您可以在片段onAttach方法中處理它。 根據您的需要設置特定項目的可見性。

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    YourActivity activity = (YourActivity)context;
    NavigationView navigationView = (NavigationView) activity.findViewById(R.id.yournavigationviewid);
    navigationView.getMenu().findItem(R.id.youritemid).setVisible(false);
}

在您獲取所選菜單項的 setNavigationItemSelectedListener 中,您可以實現代碼。 您還需要存儲隱藏菜單項的實例以使其稍后可見

MenuItem prevMenuItem;

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

   @Override
   public boolean onNavigationItemSelected(MenuItem menuItem) {
      if(prevMenuItem != null) prevMenuItem.setVisible(true) //making visible the previously hidden item.
      menuItem.setVisible(false);  

      prevMenuItem = menuItem //storing the instance of currently hidden item to make it visible later.

      return true;
   }
});

在您的公共 onNavigationItemSelected(MenuItem item) 中,如果您正在設置一個片段,那么抽屜將自動隱藏。 我正在這樣做:

 public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    toolbar.setTitle(item.toString());
    int id = item.getItemId();
    if (id == R.id.dashboard) {
        fragment = new DashboardFragment();

    } else if (id == R.id.manage_users) {

    }else{
    }
    setFragmentLayout(fragment);
    return true;
}

根據您的要求設置您的片段。

您可以在onNavigationItemSelected Listener 中使用mDrawerLayout.closeDrawers()隱藏抽屜,如下所示:

    mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                menuItem.setChecked(true);
                switch (menuItem.getItemId()) {
                    case R.id.navigation_item_shop:
                        //do your stuffs or attach fragment
                        mDrawerLayout.closeDrawers();
                        return true;
                    default:
                        return true;
               }
         }
   }

在片段上覆蓋onAttach方法。 為不需要的項目設置可見性。

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    MainActivity activity = (MainActivity)context;
    NavigationView navigationView = (NavigationView) activity.findViewById(R.id.navmenu);
   // hide the menu items not related to this fragment
    Menu m = navigationView.getMenu();
    m.findItem(R.id.first).setVisible(false);
    m.findItem(R.id.second).setVisible(false);
    m.findItem(R.id.therd).setVisible(false);
    //and so on

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM