我正在使用appcompat-v7库来反向移植Lollipop工具栏。它看起来是正确的,但是当我点击汉堡包图标(它仍然是汉堡图标)时它没有动画。奇怪的是,如果我打开抽屉并旋转设备,汉堡包图标会变成一个箭头,就像它应该在旋转之前一样。如果我旋转回肖像,它会保持箭头。这是我的代码:
import android.support.v7.app.ActionBarDrawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base_navigation);
mDrawerLayout = ButterKnife.findById(this, R.id.drawer_layout);
mContentFrameLayout = ButterKnife.findById(this, R.id.content);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open_menu, R.string.close_menu);
mDrawerLayout.setDrawerListener(this);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return mDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
}
我的主题是:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light" />
</resources>
答案 0 :(得分:0)
问题在于这一行:mDrawerLayout.setDrawerListener(this);
DrawerListener
有一个名为onDrawerSlide()
的方法。这是触发动画的地方,它由ActionBarDrawerToggle
对象处理。用这个来切换那一行:
mDrawerLayout.setDrawerListener(mDrawerToggle);
如果您需要监听抽屉上的事件,可以在ActionBarDrawerToggle
对象上覆盖它们:
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open_menu, R.string.close_menu) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getSupportActionBar().setTitle(R.string.app_name);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getSupportActionBar().setTitle(getTitle());
}
};
请务必致电super
实施。