2016-12-25 317 views
1

我已經實現了與父高度匹配的導航抽屜。現在我認爲單擊漢堡抽屜按鈕後顯示的後退箭頭按鈕實際上是必要的,因爲我無法點擊它,因爲我的導航抽屜在顯示後也會超出工具欄。關閉導航抽屜箭頭動畫

enter image description here

我其實不願意該按鈕的動畫,所以我怎麼能做出漢堡包紙盒鍵的住宿,不受其轉化爲後退箭頭?我需要代碼和解釋。謝謝!

NavigationView

<android.support.design.widget.NavigationView 
     android:id="@+id/navigation" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     app:menu="@menu/navigation_menu"/> 

MainActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     ... 

     // Drawer 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.activity_main); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, R.string.navigation_open, R.string.navigation_close); 
     drawer.addDrawerListener(toggle); 
     toggle.syncState(); 
} 

回答

0

在你的佈局,其中抽屜佈局是有的,有一個android.support.v7.widget.Toolbar在他們和工具欄裏面放左側的ImageView並點擊該圖像查看抽屜是否打開,然後關閉它,反之亦然。

像這樣:

  if (drawerLayout.isDrawerOpen(GravityCompat.START)) { 
       drawerLayout.closeDrawer(GravityCompat.START); 
      } else { 
       drawerLayout.openDrawer(GravityCompat.START); 
      } 
2

在谷歌IO 2017年這個API被引入,它可從支持庫版本25.3.0。

 

    // Install drawer toggle 
    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, 
         R.string.drawer_open, R.string.drawer_close); 

    // Disable animation 
    drawerToggle.setDrawerSlideAnimationEnabled(false); 
 

這將使抽屜箭頭不被動畫化。

See video在確切的分鐘。

enter image description here

+1

謝謝!我在谷歌IO視頻上看到了這個,但是我找不到它的API或者他們談論它的視頻哈哈 – Kaizie

0

禁用onDrawerSlide晚飯呼叫()方法。它將停止動畫箭頭和漢堡之間:

ActionBarDrawerToggle drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, "Open navigation drawer", "Close navigation drawer") { 

     @Override 
     public void onDrawerClosed(View drawerView) { 
      super.onDrawerClosed(drawerView); 

     } 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 

     } 

     @Override 
     public void onDrawerSlide(View drawerView, float slideOffset) { 

      // Do nothing Here 

     } 
    }; 

// Set the drawer toggle as the DrawerListener 
mDrawerLayout.setDrawerListener(drawerToggle);