24

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

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

但是,如果我使用滑动手势打开它一次,之后它可以正常使用 button click

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

4

7 回答 7

41

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

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

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

这对我有用。

干杯

于 2014-01-16T17:39:17.657 回答
4

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

于 2019-01-24T11:46:26.703 回答
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);
}
于 2013-08-06T20:27:06.340 回答
0

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

于 2014-02-04T12:25:54.410 回答
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>

于 2014-02-06T19:48:56.660 回答
0

太傻了,我确实设置了一个空布局,问题就像上面描述的那样,当第一次手动拖动抽屉时,之后按钮起作用了,但是没有先拖动它,导航抽屉永远不会打开。

不要设置空布局

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

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

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

于 2017-04-18T22:55:20.173 回答
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" />
于 2019-09-19T11:27:47.253 回答