汉堡图标不会使用AppCompat库进行动画处理

时间:2014-10-23 16:18:54

标签: android android-actionbar android-5.0-lollipop android-actionbar-compat android-toolbar

我正在使用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>

1 个答案:

答案 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实施。