我在我的活动中使用了android.support.v4.widget.DrawerLayout
。
只要我使用滑动手势打开它,它就可以正常工作。
但是,当我想通过点击按钮点击drawer.openDrawer(Gravity.LEFT)
打开它时,它不起作用。
但是,如果我使用滑动手势打开一次,之后只需点击按钮即可正常工作。
我知道如何解决或解决这个问题吗?
答案 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' 可见性在布局中消失了,出现了同样的问题,所以我设置了可见性 =“可见”并解决了问题。