2014-07-22 132 views
1

我遇到了NavigationDrawer圖標的問題,我希望它在ActionBar中可見。需要向用戶顯示他可以通過從屏幕左側滑動來打開我應用中的抽屜。 android如何使用AppCompat庫在ActionBar中顯示NavigationDrawer圖標

我以前使用這段代碼沒有任何問題,但是在這個應用程序中它運行得不好,我不知道問題是什麼。請幫幫我。

這裏是我的代碼:

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

    ArrayList<Integer> smIcon_adrs = new ArrayList<Integer>(); 
    smIcon_adrs.add(R.drawable.sm_font); 
    smIcon_adrs.add(R.drawable.sm_size); 
    smIcon_adrs.add(R.drawable.sm_count); 
    smIcon_adrs.add(R.drawable.sm_about); 
    ArrayAdapter<Integer> sm_adapter = new smIcoAdapter(getBaseContext(), 
      smIcon_adrs); 

    mDrawerList.setAdapter(sm_adapter); 

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
      R.drawable.ic_drawer, R.string.hello_world, R.string.app_name) { 

     /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 

      getSupportActionBar().setTitle("دعا عهد"); 
      supportInvalidateOptionsMenu(); 
      super.onDrawerClosed(view); 
     } 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      getSupportActionBar().setTitle("امکانات"); 
      supportInvalidateOptionsMenu(); 
      super.onDrawerOpened(drawerView); 
             // onPrepareOptionsMenu() 
     } 
    }; 

    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

這裏:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu items for use in the action bar 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main, menu); 

    return super.onCreateOptionsMenu(menu); 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    mDrawerToggle.syncState(); 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.action_play: 
     if (mp.isPlaying()) { 
      item.setIcon(R.drawable.actn_play); 
      mp.pause(); 
     } else { 
      updateProgressBar(); 
      mp.start(); 
      item.setIcon(R.drawable.actn_stop); 
     } 
     break; 

    } 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 

     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
public boolean onPrepareOptionsMenu(Menu menu) { 
    mDrawerLayout.isDrawerOpen(mDrawerList); 
    // menu.findItem(R.id.action_settings).setVisible(!drawerOpen); 
    return super.onPrepareOptionsMenu(menu); 
} 
+0

是U使用ActionBarSherlock或股票的ActionBar?如果您可以共享與ActionBar – dumbfingers

+0

相關的代碼,那麼我將使用appcompat庫。 –

回答

1

這是有人用類似的問題,你可能會測試解決方案張貼有:https://stackoverflow.com/a/23332975/1738838

根據您缺少這種方法:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    mDrawerToggle.onConfigurationChanged(newConfig); 
} 
+0

我用過這個,但沒有工作:( –