我试图在我的应用程序中使用导航抽屉和操作栏。包含导航抽屉的应用程序中的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);
}
谢谢。
天亚社看到,雁链接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
这样做的目的是通过设置透明xml布局的自定义显示来移除标题,但最终导航抽屉会出现在自定义的ActionBar中,而不是正确地覆盖它。 – 2014-09-03 13:59:07