24

私はandroid.support.v4.widget.DrawerLayout自分の活動で を使用しています。スワイプ ジェスチャを使用して開く限り、問題なく動作します。

ただし、 を呼び出してボタンクリックで開きたい場合はdrawer.openDrawer(Gravity.LEFT)、機能しません。

しかし、スワイプジェスチャを使用して一度開くと、その後はボタンクリックで正常に動作します

これを解決または回避する方法はありますか?

4

7 に答える 7

41

私は同じ問題を抱えていましたが、何らかの理由で引き出しを表す FrameLayout の可視性が「消えた」に設定されていることがわかりました。

したがって、レイアウト xml ファイルを開き、ドロワーを表す FrameLayout を見つけて、表示設定を消去するだけです。私の開始タグは次のようになりました:

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

それは私のために働いた。

乾杯

于 2014-01-16T17:39:17.657 に答える
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

このコードを の中に入れることができます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 に答える