【问题标题】:Android don't see ActionBarDrawerToggleAndroid 看不到 ActionBarDrawerToggle
【发布时间】:2015-09-10 19:06:15
【问题描述】:

我正在尝试将 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 按钮。如何在我的活动中添加类似“汉堡包”按钮的内容?

【问题讨论】:

  • 你是如何设置你的操作栏的?使用工具栏?什么主题?
  • @straya 我认为它被称为 AppBar。主题是Theme.AppCompat.Light
  • @AndreiM 发布了我的答案。愿它对你有所帮助。

标签: android drawerlayout


【解决方案1】:

你有没有尝试过发表以下声明:

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

【讨论】:

  • 这对我不起作用。仍然没有看到切换按钮
  • 这几乎是我想要的,唯一的问题是它对点击事件没有反应......
【解决方案2】:
    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

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多