我有一个抽屉,我试图加倍它。好吧,它很顺利,但我有一个问题的一部分。 如果我打开第一个抽屉并点击某个项目,它会打开一个新的抽屉,您可以再次选择。到现在为止还挺好。 问题是我要添加一项功能,如果你在第二个抽屉上并关闭它,它会立即打开第一个抽屉。
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
invalidateOptionsMenu();
if(layer == 1){
layer = 0;
positions = new int[]{-1, -1};
drawerListview.setAdapter(adapter);
***drawerLayout.openDrawer(drawerLayout);***
}else if(layer == 2){
layer = 0;
positions = new int[]{-1, -1};
drawerListview.setAdapter(adapter);
}
}
我标记了我试图再次打开第一个抽屉的地方。
它没有t throw any error but it just didn
起作用。
答案 0 :(得分:0)
在下面的代码段中,我将省略layer
和适配器代码,因为它对抽屉没有明显影响(至少对我而言)。
您要做的是检查关闭的抽屉是否正确,然后询问抽屉布局 打开左侧。
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
// store the mRightDrawerView as variable in onCreate...
if (drawerView == mRightDrawerView) {
// you ask the layout to open left drawer
mDrawerLayout.openDrawer(mLeftDrawerView);
// or mDrawerLayout.openDrawer(GravityCompat.START);
}
}
乍一看,您的代码非常接近。
答案 1 :(得分:0)
您希望在再次打开之前等待抽屉的动画完成:
@Override
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
mDrawer.post(new Runnable() {
@Override
public void run() {
mDrawer.openDrawer(Gravity.START);
}
});
}
Gravity.START用于xml布局:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>