2014-03-27 65 views
1

我正在开发Android项目,并试图使用Sliding Navigation Drawer来实现ActionBarSherlock。使用ActionBarSherlock实现滑动导航抽屉

实际的菜单工作正常但是,3行图标(我想如果我没有记错它称为汉堡图标)不会出现,而不是回到父母的图标,但点击它显示/隐藏菜单。

下面是我的代码:

public class MainActivity extends SherlockFragmentActivity { 

    DrawerLayout mDrawerLayout; 
    ListView mDrawerList; 
    ActionBarDrawerToggle mDrawerToggle; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     FragmentTransaction t = getSupportFragmentManager().beginTransaction(); 
     Fragment frag = new MainFragment(); 
     t.replace(R.id.content_frame, frag); 
     t.commit(); 

     mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView)findViewById(R.id.listview_drawer); 

     NavigationManagerAdapter menuAdapter = new NavigationManagerAdapter(MainActivity.this); 
     menuAdapter.add(new NavigationMenuItem("MenuItem", "MENU_PRODUCTS", GuiType.TEXTVIEW, null)); 
     menuAdapter.add(new NavigationMenuItem("MenuItem2", "MENU_TEST", GuiType.TEXTVIEW_SUMMARY, "This is a summary", mSpecificClickListener)); 

     mDrawerList.setAdapter(menuAdapter); 

     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
       R.drawable.ic_drawer, R.string.drawer_open, 
       R.string.drawer_close) { 

      public void onDrawerClosed(View view) { 
       // TODO Auto-generated method stub 
       super.onDrawerClosed(view); 
      } 

      public void onDrawerOpened(View drawerView) { 
       // TODO Auto-generated method stub 
       // Set the title on the action when drawer open 
       getSupportActionBar().setTitle("hello"); 
       super.onDrawerOpened(drawerView); 
      } 
     }; 

     mDrawerLayout.setDrawerListener(mDrawerToggle); 

     mDrawerList.setOnItemClickListener(new DrawerClickListener()); 
    } 

    public OnClickListener mSpecificClickListener = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Toast.makeText(MainActivity.this, "Specific click listener used", Toast.LENGTH_LONG).show(); 
     } 
    }; 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

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

      if (mDrawerLayout.isDrawerOpen(mDrawerList)) { 
       mDrawerLayout.closeDrawer(mDrawerList); 
      } else { 
       mDrawerLayout.openDrawer(mDrawerList); 
      } 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Pass any configuration change to the drawer toggles 
     mDrawerToggle.onConfigurationChanged(newConfig); 
    } 

    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     //getMenuInflater().inflate(R.menu.main, menu); 
     getSupportMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

感谢您的帮助,您可以提供。如果你使用ActionBarCompat的代替ActionBarSherlock因为ABS没有这种支持

+0

即使我想,这似乎并没有改变任何东西,尝试'在onOptionsItemSelected返回TRUE'。此外,你可以使用这个库,它允许你在ABS左上角显示一个图标:https://github.com/sockeqwe/SlidingMenu HTH – Fllo

回答

0

删除这些行

getSupportActionBar().setHomeButtonEnabled(true); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
+0

不幸的是没有工作 – Boardy

0

您的代码会非常完美。对于ABS删除getSupportActionBar().setDisplayHomeAsUpEnabled(true);,加入这一行:

getSupportActionBar().setIcon(R.drawable.ic_drawer); 
1

更新时间:

注:ActionBarDrawerToggle其变化的指示,以三线图标只是适用于程序兼容性遵循下列方式之一! (第2强烈建议,更容易)

它不是你的东西一样简单......

设置动作条(福尔摩斯)UpIndicator作为NavigationDrawerToggle,你应该使用其中的一个:

  1. SlidingMenu:https://github.com/sockeqwe/SlidingMenu

这是一个库,包括navigationdrawer自己具有从型动物navigationDrawer

型动物:

  • 移动内容,而不是对内容绘制菜单!
  • 变淡菜单上的开通/关闭,而不是衰落内容

  • 它具有在手势一些错误
  • 源是完全可编辑

slidingmenu http://alexanderblom.se/images/spotify-menu.png

  • SherlockNavigationDrawer:https://github.com/nicolasjafelle/SherlockNavigationDrawer
  • 这个库只是给你带来UpIndicator作为NavigationDrawerToggle功能! 它应该使用blong Android支持库!

    navdrawer

    +0

    第二个强烈推荐! – SSKahani