DrawerLayout.openDrawer第一次不起作用

时间:2013-08-06 19:10:18

标签: android drawerlayout

我在我的活动中使用了android.support.v4.widget.DrawerLayout。 只要我使用滑动手势打开它,它就可以正常工作。

但是,当我想通过点击按钮点击drawer.openDrawer(Gravity.LEFT)打开它时,它不起作用。

但是,如果我使用滑动手势打开一次,之后只需点击按钮即可正常工作。

我知道如何解决或解决这个问题吗?

8 个答案:

答案 0 :(得分:29)

我遇到了同样的问题,我刚刚发现由于某种原因,代表抽屉的FrameLayout的可见性设置为“已消失”,这可能会在第一次slideGesture期间变为“可见”。

因此,打开布局xml文件,找到代表抽屉的FrameLayout,然后简单地删除可见性设置。我的开场标签现在如下:

<FrameLayout
    android:layout_width="305dp"
    android:layout_height="match_parent"
    android:layout_gravity="start">

这对我有用。

干杯

答案 1 :(得分:3)

如果你想从左上角切换打开它,你应该实现onOptionsItemSelected(MenuItem item)

@Override
public boolean onOptionsItemSelected(MenuItem item) {
     // The action bar home/up action should open or close the drawer.
     // ActionBarDrawerToggle will take care of this.
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }

    switch (item.getItemId()) {
    case android.R.id.home:
        return true;
    }
   return super.onOptionsItemSelected(item);
}

答案 2 :(得分:1)

在我的情况下,布局中“ NavigationView”的可见性设置为 gone 。将其更改为可见即可解决问题

答案 3 :(得分:0)

请对clearFocus()对象使用DrawerLayout方法。

答案 4 :(得分:0)

遇到同样的问题,并且可以通过在布局中指定抽屉内容元素的宽度来修复它。

如果没有layout_width属性,抽屉在第一次openDrawer()调用时没有打开, 它的价值。

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

<FrameLayout
    android:layout_width="300dp" 
    android:layout_height="match_parent"
    android:layout_gravity="right"
    android:background="#ffffff"
    android:id="@+id/drawer_content">
</FrameLayout>

答案 5 :(得分:0)

太傻了,我确实设置了一个空的布局, 问题就像上面所描述的那样,当第一次手动拖动抽屉时,按钮工作,但没有先拖动它,导航抽屉从未打开过。

不要设置空布局

从表示NavigationDrawerContent的ListView中删除我的EmptyLayout,使其再次完美运行。

<强> DONT

drawerContentListView.setEmptyView(getLayoutInflater().inflate(R.layout.navigation_drawer_empty_layout, null));

****花了我一个多小时。

答案 6 :(得分:0)

您可以将此代码放在DrawerLayout中:

<android.support.design.widget.NavigationView
 android:id="@+id/nav_view"
 android:layout_width="wrap_content"
 android:layout_height="match_parent"
 android:layout_gravity="start"
 app:headerLayout="@layout/nav_header_main"
 app:menu="@menu/activity_main_drawer" />

答案 7 :(得分:-1)

在我的例子中,'navigationView' 可见性在布局中消失了,出现了同样的问题,所以我设置了可见性 =“可见”并解决了问题。