私はandroid.support.v4.widget.DrawerLayout
自分の活動で を使用しています。スワイプ ジェスチャを使用して開く限り、問題なく動作します。
ただし、 を呼び出してボタンクリックで開きたい場合はdrawer.openDrawer(Gravity.LEFT)
、機能しません。
しかし、スワイプジェスチャを使用して一度開くと、その後はボタンクリックで正常に動作します。
これを解決または回避する方法はありますか?
私はandroid.support.v4.widget.DrawerLayout
自分の活動で を使用しています。スワイプ ジェスチャを使用して開く限り、問題なく動作します。
ただし、 を呼び出してボタンクリックで開きたい場合はdrawer.openDrawer(Gravity.LEFT)
、機能しません。
しかし、スワイプジェスチャを使用して一度開くと、その後はボタンクリックで正常に動作します。
これを解決または回避する方法はありますか?
私は同じ問題を抱えていましたが、何らかの理由で引き出しを表す FrameLayout の可視性が「消えた」に設定されていることがわかりました。
したがって、レイアウト xml ファイルを開き、ドロワーを表す FrameLayout を見つけて、表示設定を消去するだけです。私の開始タグは次のようになりました:
<FrameLayout
android:layout_width="305dp"
android:layout_height="match_parent"
android:layout_gravity="start">
それは私のために働いた。
乾杯
左上のトグルから開きたい場合は、実装する必要があります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>
このコードを の中に入れることができます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" />