Подтвердить что ты не робот

Как программно отображать/скрыть навигационный ящик

Как я могу использовать кнопку для отображения/скрытия навигационного ящика, я использовал ссылку this SO для создания и управления ящиком навигации.

Теперь я использую (Проведите по экрану справа - чтобы показать) и (Проведите по экрану справа налево - чтобы скрыть)

Как я могу показать/скрыть ящик с помощью кнопки, выделенной ниже в скриншоте:

введите описание изображения здесь

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);, но где я должен разместить этот код?

4b9b3361

Ответ 1

Возьмите ссылку на DrawerLayout и вызовите closeDrawer (int), чтобы закрыть его, и openDrawer (int), чтобы открыть его. Параметр int относится к гравитации. В вашем случае это должны быть GravityCompat.LEFT/GravityCompat.START, потому что согласно скриншоту, который вы разместили, ваш DrawerLayout открывается и закрывается слева.

Ответ 2

Закрыть ящик:

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

Открыть ящик:

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

Ответ 3

Если вы используете меню раздвижного ящика, и вы хотите скрыть меню, когда оно открыто (при перетаскивании справа налево). Затем мы должны иметь дело с listview object ontouch listener. Код будет таким.

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

Для полного кода вы можете поместить комментарий здесь, если у вас есть проблемы