我android.support.v4.widget.DrawerLayout
在我的活动中使用 a 。只要我使用滑动手势打开它,它就可以正常工作。
但是,当我想通过调用按钮单击打开它时drawer.openDrawer(Gravity.LEFT)
,它不起作用。
但是,如果我使用滑动手势打开它一次,之后它可以正常使用 button click。
知道如何解决或解决这个问题吗?
我android.support.v4.widget.DrawerLayout
在我的活动中使用 a 。只要我使用滑动手势打开它,它就可以正常工作。
但是,当我想通过调用按钮单击打开它时drawer.openDrawer(Gravity.LEFT)
,它不起作用。
但是,如果我使用滑动手势打开它一次,之后它可以正常使用 button click。
知道如何解决或解决这个问题吗?
我遇到了同样的问题,我刚刚发现由于某种原因,代表抽屉的 FrameLayout 的可见性设置为“消失”,这可能在第一个 slideGesture 期间变为“可见”。
因此,打开您的布局 xml 文件,找到代表抽屉的 FrameLayout 并简单地删除可见性设置。我的开始标签现在如下:
<FrameLayout
android:layout_width="305dp"
android:layout_height="match_parent"
android:layout_gravity="start">
这对我有用。
干杯
在我的情况下,“NavigationView”的可见性在布局中设置为消失。将其更改为可见解决了问题
如果你想从左上切换打开它,你应该实现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);
}
请使用对象clearFocus()
的方法DrawerLayout
。
遇到了同样的问题,并且能够通过为布局内的抽屉内容元素指定宽度来解决它。
如果没有 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>
太傻了,我确实设置了一个空布局,问题就像上面描述的那样,当第一次手动拖动抽屉时,之后按钮起作用了,但是没有先拖动它,导航抽屉永远不会打开。
不要设置空布局。
从代表 NavigationDrawerContent 的 ListView 中删除我的 EmptyLayout 使其再次完美运行。
不
drawerContentListView.setEmptyView(getLayoutInflater().inflate(R.layout.navigation_drawer_empty_layout, null));
**** 花了我一个多小时。
您可以将此代码放入您的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" />