2014-11-22 70 views
7

我在我的應用程序中工作得很好,我有一個導航抽屜(appcompat v7)。Android DrawerLayout.setDrawerLockMode()不起作用

現在我想禁用它,直到用戶購買應用內購買來解鎖附加功能。所以在我的Activity.onCreate(),初始化抽屜和填充之後,我調用這個函數:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

此功能沒有做任何事情。在操作欄中輕敲抽屜克拉後,抽屜會繼續正常打開和關閉。我試着在Activity.onResume()中調用這個函數沒有任何區別。

什麼是使用此功能的正確方法? (我試着在網上尋找答案,但找不到解決我的問題的任何東西)。任何幫助表示讚賞,因爲我在這個問題上停留了很長一段時間。

回答

5

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

只能通過刷,直到你點擊抽屜式導航欄圖標 保持布爾變量

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);onStart(),也寫下面的代碼行禁止開抽屜佈局

@Override 
    public boolean onOptionsItemSelected(android.view.MenuItem item) { 

     if(!disabled) 
     { 
     if (item.getItemId() == android.R.id.home) { 

      if (mDrawerLayout.isDrawerOpen(mDrawerLinearLayout)) { 
       mDrawerLayout.closeDrawer(mDrawerLinearLayout); 
      } else { 
       mDrawerLayout.openDrawer(mDrawerLinearLayout); 
      } 
     } 
     } 
     return super.onOptionsItemSelected(item); 
    } 

這將工作肯定

+0

如果你覺得這個代碼會去setDrawerLockMode(int)? – rgamber 2014-11-22 05:14:17

+0

當選擇溢出菜單中的項目時,不會在選擇導航抽屜中的項目時調用onOptionsItemSelected。 – rgamber 2014-11-22 05:17:54

+0

這就是爲什麼我寫item.getItemId()== android.R.id.home 它是所謂的當導航抽屜點擊主頁按鈕 – 2014-11-22 05:19:02

3

當您撥打setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)它通過滑動鎖定打開和關閉抽屜只有

由於您的抽屜仍然會響應openDrawer(int),closeDrawer(int)的調用,但抽屜被鎖定後,抽屜會繼續正常打開和關閉,因爲抽屜會在操作欄中輕敲抽屜克拉。 您需要在您的操作欄菜單按鈕偵聽器中添加一些邏輯,並且在您不想打開時不要調用openDrawer(int)。

順便說一句,這是好的調用onСreate