如何以编程方式显示/隐藏导航抽屉

时间:2015-09-15 10:02:40

标签: android navigation-drawer

如何使用按钮显示/隐藏导航抽屉,我使用了this SO链接来创建和管理导航抽屉。

现在我正在使用(向左滑动 - 显示)和(从右向左滑动 - 隐藏)

如何使用下方屏幕截图中突出显示的按钮显示/隐藏抽屉:

enter image description here

header_home.xml:

<RelativeLayout        
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:id="@+id/header_layout" 
    android:gravity="fill_horizontal" 
    android:layout_gravity="top|center">


 <TextView
    android:id="@+id/textHeader"
    android:text="Home"
    android:textColor="#ffffff"
    android:gravity="center"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/bg_header"
 />

 <ImageButton
    android:id="@+id/btnDrawer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:adjustViewBounds="true"
    android:background="@drawable/icon_drawer"
    android:contentDescription="@string/app_name"
    />

编辑:

     btnMenu.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            drawer.openDrawer(Gravity.LEFT);                
        }
    });

我知道要关闭我必须拨打drawer.closeDrawer(Gravity.LEFT);,但我必须放置此代码吗?

5 个答案:

答案 0 :(得分:54)

抓取对DrawerLayout的引用,并致电closeDrawer(int)关闭它,然后openDrawer(int)将其打开。 int参数指的是引力。在您的情况下,它应该是Gravity.LEFT / Gravity.START,因为根据您发布的屏幕截图,您的DrawerLayout在左侧打开和关闭

答案 1 :(得分:3)

关闭抽屉:

drawer.CloseDrawer((int)GravityFlags.Left);

打开抽屉:

drawer.OpenDrawer((int)GravityFlags.Left);

答案 2 :(得分:0)

要打开抽屉

DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.openDrawer(GravityCompat.START);

关闭抽屉

DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);

答案 3 :(得分:0)

我可能会迟到,但这是您正在寻找的解决方案:

btnMenu.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
         if(drawer.isDrawerOpen(GravityCompat.START)){
                drawerLayout.closeDrawer(GravityCompat.START);
            }
            else {
                drawerLayout.openDrawer(GravityCompat.START);
            }                
    }
});

答案 4 :(得分:-2)

如果您正在使用滑动抽屉菜单,并且您希望在菜单打开时隐藏菜单(从右向左拖动时)。然后我们必须处理listview对象ontouch监听器。 代码将是这样的。

    //((( When we drage from Right to left then menu hide ))))
    lvMenu.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            switch (event.getAction()) 
            {
                case MotionEvent.ACTION_DOWN:
                    toggleMenu(v);                  
                    break;

                case MotionEvent.ACTION_UP:
                    //showtoast("up");
                    break;

                default:
                    return false;
            }
            return false;
        }


    });

     public void toggleMenu(View v) {
    mLayout.toggleMenu();
}

对于完整代码,如果您有任何问题,可以在此处添加评论