2015-02-24 89 views
8

我试图在我的应用中实现android.support.v4.app.ActionBarDrawerToggle;因为此类已弃用已过时的ActionBarDrawerToggle

此课程已弃用。请在 support-v7-appcompat中使用ActionBarDrawerToggle。

我已经切换到android.support.v7.app.ActionBarDrawerToggle。

之前,我可以打电话给这样的构造:

mDrawerToggle = new ActionBarDrawerToggle(
      this,     /* host Activity */ 
      mDrawerLayout,   /* DrawerLayout object */ 
      R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */ 
      R.string.drawer_open, /* "open drawer" description for accessibility */ 
      R.string.drawer_close /* "close drawer" description for accessibility */ 
     ){ 
     public void onDrawerClosed(View view) { 
      getActionBar().setTitle(mTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     public void onDrawerOpened(View drawerView) { 
      getActionBar().setTitle(mDrawerTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 

,但我已经切换到新的V7支持库后,我收到错误

"ActionBarDrawerToggle() in ActionBarDrawerToggle cannot be applied to: 

toolbar: android.support.v7.widget.Toolbar 
Actual arguments: R.drawable.ic_drawer (int)" 

显然我不是介绍一个合适的工具栏到构造函数中,但我不确定要理解两个冲突参数之间的区别。我如何获得所需的工具栏?

+1

我第二个这个问题。我发现这是一个部分解决方案:getActionBar()。setDisplayShowHomeEnabled(true); getActionBar()。setIcon(R.drawable.ic_drawer); 问题是图标有填充 - 我该如何删除它?另外 - 我在哪里可以找到一个很好的ic_drawer.png? – mikeesouth 2015-03-11 22:54:27

+1

同时,这个问题在http://stackoverflow.com/questions/26439619/how-to-replace-deprecated-android-support-v4-app-actionbardrawertoggle回答 – k3b 2015-04-14 19:12:20

回答

17

我通过导入新android.support.v7.app.ActionBarDrawerToggle,通过使用RecyclerView而不是ListView控件的解决我的问题,如本例所示:How to make Material Design Navigation Drawer With Header View

private ActionBarDrawerToggle mDrawerToggle; 
//... ... 
mDrawerToggle = new ActionBarDrawerToggle(
      this, 
      mDrawerLayout, 
      toolbar, 
      R.string.drawer_open, R.string.drawer_close){ 
        @Override 
        public void onDrawerOpened(View drawerView) { 
         super.onDrawerOpened(drawerView); 
         // code here will execute once the drawer is opened 
         getSupportActionBar().setTitle(mTitle); 
         invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
        } 
        @Override 
        public void onDrawerClosed(View drawerView) { 
         super.onDrawerClosed(drawerView); 
         // Code here will execute once drawer is closed 
         getSupportActionBar().setTitle(mDrawerTitle); 
         invalidateOptionsMenu(); 
    }; 

如果您仍然有问题点击这里: How to replace deprecated android.support.v4.app.ActionBarDrawerToggle