如何仅通过按钮打开抽屉布局?

6

我正在开发一个有标签结构的应用程序,并使用滑动动作来浏览标签页。

但现在,我想应用抽屉式布局。问题是抽屉式布局有滑动打开事件。我怎么可以删除这个事件?我的想法是抽屉只能通过按钮打开和关闭。这种情况是否可行? 谢谢!


你好,你成功通过点击选项卡按钮打开抽屉了吗?请告诉我,谢谢。 - Ajay P. Prajapati
4个回答

24

只需要写就可以了

drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

防止菜单响应手势

使用openDrawercloseDrawer来改变菜单的可见性


打开抽屉的 (int gravity arg) 参数是什么? - Abdul Wahab
@AbdulWahab Gravity.LEFT或Gravity.RIGHT用于RTL。 API 14中使用Gravity.START / Gravity.END。 - Rowan

16

默认情况下,除非您编写代码打开 Drawer,否则 DrawerLayout 不会在视图中显示,直到触发滑动事件。

导航抽屉示例中可以看到,content_frame 用于使用片段动态显示视图。

  <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>

FragmentonCreateView()方法中,您可以添加一个按钮,并为其设置OnClickListener监听器,然后将以下代码放入其中:

   //For me a better way in avoiding a `null pointer` in getting the DrawerLayout
   final DrawerLayout drawer = (DrawerLayout) getActivity().findViewById(R.id.drawer_layout);
   btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                            //Opens the Drawer
                drawer.openDrawer(Your View, Usually a ListView);
            }

                return false;
        });

您也可以使用*来关闭抽屉。

drawer.closeDrawer(Your View, Usually a ListView);

2
这对我起了作用。我确实想显示 ActionBar。所以我将其隐藏,向主布局添加了一个按钮,并实现了 openDrawer 和 closeDrawer 方法。感谢 @lordzden。 - V A
2
在“drawer.openDrawer(Your View, Usually a ListView);”中,listView是什么意思?@lordzden - Sazzad Hissain Khan

1
你可以这样写
 mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            drawer.openDrawer(navigationView);

        }
    });

0
如果您想在片段内的按钮单击时在抽屉项之间导航,可以使用以下内容:
((YourMainActivity)getActivity()).selectItem(position);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接