1

こんにちは、デザインサポートライブラリと呼ばれるAndroidの最新のサポートライブラリを使用しており、その中でNavigationViewを使用してドロワーを表示しています。しかし、問題は、引き出しを開いたときにハンバーガー アイコンが回転して戻る矢印アイコンにならず、常に同じままですが、サポート ライブラリなしで引き出しレイアウトを使用すると、自動的に回転したことを思い出すことができます。これが私の最後の試みです。私がしたこと:

dl.setDrawerListener(new ActionBarDrawerToggle(this, dl, tb, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);

                supportInvalidateOptionsMenu();
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                supportInvalidateOptionsMenu();
            }

            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                super.onDrawerSlide(drawerView, slideOffset);

            }
        });

ここで見逃している短いトリックやヒントはありますか?

4

4 に答える 4

0

ハンバーガーやメニュー アイコンをアニメーション化するために使用できるクラスを作成しました。

import android.app.Activity;
import android.content.Context;
import android.support.v7.graphics.drawable.DrawerArrowDrawable;

/**
* Created by ankush38u on 5/13/2016.
*/
public class DrawerArrowAnimation {
public static class DrawerArrowDrawableToggle extends DrawerArrowDrawable       implements DrawerToggle {
    private final Activity mActivity;

    public DrawerArrowDrawableToggle(Activity activity, Context themedContext) {
        super(themedContext);
        mActivity = activity;
    }

    public void setPosition(float position) {
        if (position == 1f) {
            setVerticalMirror(true);
        } else if (position == 0f) {
            setVerticalMirror(false);
        }
        setProgress(position);
    }

    public float getPosition() {
        return getProgress();
    }
}

/**
 * Interface for toggle drawables. Can be public in the future
 */
  public static interface DrawerToggle {

    public void setPosition(float position);

    public float getPosition();
}

}

次に、このアニメーション化されたドローアブルのアクティビティまたはフラグメントで変数を作成し、.setHomeAsUpIndicator(drawerDrawable) によってホーム アイコンのドローアブル リソースとしてドローアブルを設定します。

public static DrawerArrowAnimation.DrawerArrowDrawableToggle drawerDrawable;


//this is if you are using fragments
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
drawerDrawable = new DrawerArrowAnimation.DrawerArrowDrawableToggle(((AppCompatActivity) getActivity()), ((AppCompatActivity) getActivity()).getSupportActionBar().getThemedContext());
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setHomeAsUpIndicator(drawerDrawable);

drawerDrawable.setPosition(float position); を使用できるようになりました。setPosition を 0.0f から 1.0f に設定して、ドローアブル アイコンをアニメーション化します。

于 2016-05-13T11:24:38.270 に答える
0

私はこれで問題を解決しました。実際には、このコードを使用してハンバーガーアイコンをアクションバーアイコンとしてハード設定する方法を使用していました:

ab.setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp);

このコード行をコメントアウトしたところ、うまくいきました。

于 2015-07-06T21:41:19.000 に答える