0

Lollipop ツールバーをバックポートするために appcompat-v7 ライブラリを使用しています。正しいように見えますが、ハンバーガー アイコンをクリックしてもアニメーションしません (ハンバーガー アイコンのままです)。奇妙なのは、ドロワーを開いてデバイスを回転させると、ハンバーガー アイコンが、回転する前と同じように矢印に変わることです。縦向きに戻すと、矢印のままです。これが私のコードです:

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>
4

1 に答える 1

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必ず実装を呼び出してください。

于 2014-10-23T16:18:53.633 に答える