2016-05-12 82 views
1

我正在開發Android應用程序,我在那裏有一個導航抽屜。由於導航抽屜工具欄不能透明,並且結尾三點按鈕圖標無法更改,所以我選擇隱藏該工具欄並顯示自定義佈局。它會給我所有需要的功能。導航抽屜不從cutom菜單按鈕開放

但我現在面臨的問題是,一旦活動開始,如果我點擊自定義菜單按鈕,它不會打開。一旦我將它拖拽並打開,之後每當我點擊菜單按鈕時,它就會打開導航抽屜。

我可能會錯過什麼?這是我正在做的事情,同時調試它甚至來到其他部分,但不打開。

在BaseActivity:

drawer     = (DrawerLayout) findViewById(R.id.drawer_layout); 
    toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.addDrawerListener(toggle); 
    toggle.syncState(); 

navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 


ivLeft.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (drawer.isDrawerOpen(Gravity.LEFT)) { 
       drawer.closeDrawer(Gravity.LEFT); 
      } else { 
       drawer.openDrawer(Gravity.LEFT); 
      } 
     } 
    }); 

在任何一個子活動:

toolbar.setVisibility(View.GONE); 
    navigationView.setVisibility(View.GONE); 

請幫助..

+0

聽起來好像你正在'DrawerListener'方法之一中設置'ivLeft'的'OnClickListener'。你在哪裏打電話給你發佈的代碼塊? –

+0

其實我有Baseactivity和兒童活動functionalaity。 此代碼位於我的BaseActivity中,以便所有子活動都可以使用相同的功能。 而ivLeft也是公開的。 – Ari

+0

我們需要查看更多周圍的相關代碼。 –

回答

1

你的問題的根本原因是,你設置的事實抽屜View的可見度爲GONE。然而,你描述的奇怪行爲的直接原因是DrawerLayout及其幫助類之一在抽屜狀態改變時更新孩子View

您設置爲打開和關閉抽屜的OnClickListener正常工作。它似乎不是,因爲抽屜ViewGONE。但是,通過拖動手動打開抽屜時,DrawerLayout使用的ViewDragHelper正在觸發回調方法,該方法明確將抽屜設置爲VISIBLE。當抽屜以編程方式打開時(即使用openDrawer()方法),此回調不會被觸發 - 這就解釋了爲什麼抽屜只是通過單擊您的自定義切換按鈕才顯示。將抽屜拖動一次後,抽屜View就會顯示出來,然後切換按預期工作。

抽屜View默認處於關閉狀態,因此您不需要隱藏它,您可以刪除navigationView.setVisibility(View.GONE);行。