Как программно отображать/скрыть навигационный ящик
Как я могу использовать кнопку для отображения/скрытия навигационного ящика, я использовал ссылку 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);
, но где я должен разместить этот код?
Ответы
Ответ 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();
}
Для полного кода вы можете поместить комментарий здесь, если у вас есть проблемы