web-dev-qa-db-ja.com

DrawerLayoutのジェスチャーリスナーを無効にする

DrawerLayoutのジェスチャ認識を無効にするにはどうすればよいですか? (左から右にスワイプ)、閉じるジェスチャ(右から左)のみを受け入れ、ホームボタンだけで引き出しを開きますか?

61

これは私のために働いた:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

ホームボタンをタップして引き出しを展開し、右から左へのスワイプジェスチャーを使用して閉じることができます。ただし、左から右へのスワイプはトリガーされなくなりました。

153
Thuy Trinh

setDrawerLockMode()の場合、これはコード内にありますが、 Android開発者 ドキュメントにはありません:

/**
 * The drawer is unlocked.
 */
public static final int LOCK_MODE_UNLOCKED = 0;

/**
 * The drawer is locked closed. The user may not open it, though
 * the app may open it programmatically.
 */
public static final int LOCK_MODE_LOCKED_CLOSED = 1;

/**
 * The drawer is locked open. The user may not close it, though the app
 * may close it programmatically.
 */
public static final int LOCK_MODE_LOCKED_OPEN = 2;
19
greg7gkb

DrawerLayoutジェスチャー認識を無効にするには:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);

次に、右から左へのスワイプを有効にするには、次のリソースを確認します。 http://Android-journey.blogspot.com/2010/01/Android-gestures.html

3
Hadi

バグを見つけたようです。たとえば、設定されている場合:

_Android:layout_gravity="right"
_

または

_Android:layout_gravity="left"
_

引き出しのコンテンツと.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)を使用するには、すべて問題ありません。

ただし、_Android:layout_gravity="left|center_vertical"_またはそのようなものが_LOCK_MODE_LOCKED_CLOSED_で動作しない場合。

2
ViT-Vetal-

これは私のために働いた:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

トリガーするハンバーガーアイコンまたはボタンをタップすると、引き出しを展開できます。ただし、左から右へのスワイプはトリガーされなくなりました。

1
Prakhar Gupta

LOCK_MODE_LOCKED_CLOSED最近では、ハンバーガーメニュー(不要な場合もあります)を使用しても、ナビゲーションメニューが表示されなくなります。次は私のために働いた: https://stackoverflow.com/a/52160351/37732

0
Martin Vysny