簡體   English   中英

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>

和活動代碼:

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();
    }
}

我可以從左側滑動以查看我的抽屜菜單,但是在活動標題的左側沒有看到任何可切換抽屜菜單的ActionBar按鈕。 如何在活動中添加“漢堡”按鈕之類的內容?

    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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM