getActionBar().setHomeAsUpIndicator() 中断导航抽屉 "Hamburger" 动画
getActionBar().setHomeAsUpIndicator() Breaking Navigation Drawer "Hamburger" Animation
在我的应用程序中,我使用了导航抽屉。我为导航抽屉中的每个项目提供了不同的图标,用于打开导航抽屉。
当我最初启动应用程序时,第一个片段的抽屉图标像往常一样动画。但是当我点击另一个 Nav Drawer Item 时,动画中断了。
在我的 MainActivity 中,我有这个用于切换导航抽屉的代码:
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ab_mytasks, R.string.drawer_open,
R.string.drawer_close) {
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()
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
然后在我的每个片段中,我都有用于设置自定义图标的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
final ActionBar actionBar = getActivity().getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setHomeAsUpIndicator(R.drawable.ab_mytasks);
}
我尝试将与 MainActivity 中相同的 mDrawerToggle 方法放入我的片段中。但是当我使用 getActivity().invalidateOptionsMenu() 时应用程序崩溃了。
这是我的问题的图像表示:
1 = Animation works as normal
2 = Selected another fragment from Nav Drawer
3 = Original Fragment icon animation is broken
当您更改图标 (setHomeAsUpIndicator
) 时,您将不再获得动画。
在我的应用程序中,我使用了导航抽屉。我为导航抽屉中的每个项目提供了不同的图标,用于打开导航抽屉。
当我最初启动应用程序时,第一个片段的抽屉图标像往常一样动画。但是当我点击另一个 Nav Drawer Item 时,动画中断了。
在我的 MainActivity 中,我有这个用于切换导航抽屉的代码:
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ab_mytasks, R.string.drawer_open,
R.string.drawer_close) {
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()
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
然后在我的每个片段中,我都有用于设置自定义图标的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
final ActionBar actionBar = getActivity().getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setHomeAsUpIndicator(R.drawable.ab_mytasks);
}
我尝试将与 MainActivity 中相同的 mDrawerToggle 方法放入我的片段中。但是当我使用 getActivity().invalidateOptionsMenu() 时应用程序崩溃了。
这是我的问题的图像表示:
1 = Animation works as normal
2 = Selected another fragment from Nav Drawer
3 = Original Fragment icon animation is broken
当您更改图标 (setHomeAsUpIndicator
) 时,您将不再获得动画。