Android 没有看到 ActionBarDrawerToggle

Android don't see ActionBarDrawerToggle

我正在尝试将 DrawerLayout 添加到我的应用程序中。这是我的布局:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ListView
            android:id="@+id/list"
            android:listSelector="@android:color/transparent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </FrameLayout>
    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"/>
</android.support.v4.widget.DrawerLayout>

和activity代码:

public class HomeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        setupNavigationDrawer();
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
    }

    private void setupNavigationDrawer() {

        DrawerLayout mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
                this,
                mDrawerLayout,
                R.string.hello_world,
                R.string.hello_world
        ) {
            public void onDrawerClosed(View view) {
                //Snackbar.make(view, R.string.drawer_close, Snackbar.LENGTH_SHORT).show();
            }

            public void onDrawerOpened(View drawerView) {
                //Snackbar.make(drawerView, R.string.drawer_open, Snackbar.LENGTH_SHORT).show();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);
        mDrawerToggle.syncState();
    }
}

我可以从左侧轻扫并查看我的抽屉菜单,但我没有在 activity 标题左侧看到任何切换抽屉菜单的 ActionBar 按钮。我如何向我的 activity 添加类似 "hamburger" 按钮的东西?

    mDrawerToggle = new ActionBarDrawerToggle(this,Drawer,toolbar,R.string.openDrawer,R.string.closeDrawer){
                @Override
                public void onDrawerOpened(View drawerView) {
                    super.onDrawerOpened(drawerView);
                }
                @Override
                public void onDrawerClosed(View drawerView) {
                    super.onDrawerClosed(drawerView);
                }
            };
            Drawer.setDrawerListener(mDrawerToggle);// use this line to set Drawer toggle

您是否尝试过输入以下语句:

//calling sync state is necessary or else your hamburger icon won't show up
mDrawerToggle.syncState();

我已经设置了以下 ic_menu(附加的 png 图片,所以您可能看不到)可绘制作为指示器...它非常适合我。

/**
 * Setting of Actionbar
 */
private void setupToolbar() {
    final ActionBar ab = getSupportActionBar();
    ab.setHomeAsUpIndicator(R.drawable.ic_menu);
    ab.setDisplayHomeAsUpEnabled(true);
}

参见以下函数:

/**
 * In case if you require to handle drawer open and close states
 */
private void setupActionBarDrawerToggle() {

    mDrawerToggle = new ActionBarDrawerToggle(
            this,               /* host Activity */
            mDrawerLayout,      /* DrawerLayout object */
            R.string.drawer_open,       /* "open drawer" description */
            R.string.drawer_close       /* "close drawer" description */
    ) {

        /**
         * Called when a drawer has settled in a completely closed state.
         */
        public void onDrawerClosed(View view) {
            //Snackbar.make(view, R.string.drawer_close, Snackbar.LENGTH_SHORT).show();
        }

        /**
         * Called when a drawer has settled in a completely open state.
         */
        public void onDrawerOpened(View drawerView) {
            //Snackbar.make(drawerView, R.string.drawer_open, Snackbar.LENGTH_SHORT).show();
        }
    };
    //Setting the actionbarToggle to drawer layout
    mDrawerLayout.setDrawerListener(mDrawerToggle);

    //calling sync state is necessary or else your hamburger icon wont show up
    mDrawerToggle.syncState();
}

您最好使用支持包中的 NavigationView。更易于使用,代码更少等

http://android-developers.blogspot.no/2015/05/android-design-support-library.html

http://antonioleiva.com/navigation-view/

https://developer.android.com/reference/android/support/design/widget/NavigationView.html