2014-09-03 49 views
0

我试图在我的应用程序中使用导航抽屉和操作栏。包含导航抽屉的应用程序中的ActionBar基本自定义

操作栏中最左上角的按钮可打开和关闭抽屉,并且在抽屉关闭状态下没有标题。但是当抽屉打开时,标题重新出现。标题是项目名称。我期待从每种场景中删除此标题。在下面的代码,你可以看到我试图再次设定内部抽屉打开和关闭

private NavigationDrawerFragment mNavigationDrawerFragment; 
private ActionBarDrawerToggle mDrawerToggle; 
private DrawerLayout mDrawerLayout; 

/** 
* Used to store the last screen title. For use in {@link #restoreActionBar()}. 
*/ 
private CharSequence mTitle; 

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

    setTitle(""); 
    final ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayShowTitleEnabled(false); 
    actionBar.setDisplayHomeAsUpEnabled(false); 
    actionBar.setIcon(R.drawable.plus); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

    mNavigationDrawerFragment = (NavigationDrawerFragment) 
      getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); 
    mTitle = getTitle(); 

    // Set up the drawer. 
    mNavigationDrawerFragment.setUp(
      R.id.navigation_drawer, 
      (DrawerLayout) findViewById(R.id.drawer_layout)); 

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_closed) 
    { 
     /* 
     * Called when a drawer has settled in a completely closed state 
     */ 
     public void onDrawerClosed(View view) 
     { 
      Log.d("drawerToggle", "Drawer closed"); 
      super.onDrawerClosed(view); 
      setTitle(""); 
      //getActionBar().setTitle(R.string.app_name); 
      actionBar.setDisplayShowTitleEnabled(false); 
      actionBar.setDisplayHomeAsUpEnabled(false); 
      invalidateOptionsMenu(); //Creates call to onPrepareOptionsMenu() 
     } 

     /* 
     * Called when a drawer has settled in a completely open state 
     */ 
     public void onDrawerOpened(View drawerView) 
     { 
      super.onDrawerOpened(drawerView); 
      actionBar.setDisplayShowTitleEnabled(false); 
      actionBar.setDisplayHomeAsUpEnabled(false); 
      invalidateOptionsMenu(); 
     } 
    }; 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 
} 

另外的三条横线当抽屉被打开的是改变/关闭,什么只是完全删除的最佳方式这些行(但保留主要图标)?目前,我只是将ic_drawer设置为透明图像。

下面是我的代码,它可以在抽屉打开/关闭时更改菜单。它似乎有效,但这是做这件事的最好方法吗?

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    if (!mNavigationDrawerFragment.isDrawerOpen()) { 
     inflater.inflate(R.menu.main, menu); 
     //restoreActionBar(); 
     System.out.println("inhere"); 
     //return true; 
     //return super.onCreateOptionsMenu(menu); 
    } 
    else 
     inflater.inflate(R.menu.close_left_drawer, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

谢谢。

+0

天亚社看到,雁链接http://stackoverflow.com/questions/25618568/action-bar-custom-image-and-text-near-up-button/ 25619046?noredirect = 1#comment40024050_25619046 – 2014-09-03 13:17:46

+0

这样做的目的是通过设置透明xml布局的自定义显示来移除标题,但最终导航抽屉会出现在自定义的ActionBar中,而不是正确地覆盖它。 – 2014-09-03 13:59:07

回答

0

setTitle将设置标题和setIcon将图标设置为ActionBar

getActionBar().setTitle("Your Title"); 
getActionBar().setDisplayShowHomeEnabled(true); 
getActionBar().setHomeButtonEnabled(true); 
getActionBar().setDisplayHomeAsUpEnabled(true); 
getActionBar().setIcon(R.drawable.youricon); 

参考:Adding Up Actionhttp://developer.android.com/guide/topics/ui/actionbar.html

+0

setIcon设置主图标,与导航抽屉打开/关闭时更改的三条水平线无关。 setTitle确实会改变标题,但是当导航抽屉被打开时,这被忽略,并且项目标题被恢复。 – 2014-09-03 13:52:46