セットアップ
contentView が のインスタンスであるアクティビティがありDrawerLayout
、アクション バーにドロワー インジケーターが表示されたナビゲーション ドロワーがあります。アクティビティには、オプションのリストを含む が含まれています。これをFragment
と呼びましょう。ListFragment
オプションをクリックすると、 を に置き換えListFragment
ますDetailFragment
。
この時点で、ナビゲーション ドロワー インジケーターの代わりに「上」ナビゲーション オプションを表示したいと思います。を呼び出して引き出しインジケーターを無効にすると、「上」アイコンを表示できますmDrawerToggle.setDrawerIndicatorEnabled(false)
が、これは引き出しアイコンを削除するだけです。機能は削除しません。つまり、キャレットをクリックすると、ナビゲーション引き出しがまだ開いています。
さらに、これらのサブビューでは、画面の端からドラッグして引き出しを開くことを無効にしたいと考えています。呼び出してこれを実行しようとしましたsetDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
が、この機能が無効になっているようには見えません。
ActionBarDrawerToggle
インジケーターがクリックされたときにドロワーが開かないようにクラスを拡張しようとしましたが、オーバーライド アクション (「上」ナビゲーション) が実行されるだけで、ドロワーはまだ開きます。
フラグメント使用時の Android ナビゲーション ドロワー イメージとアップ キャレットの切り替えの手順も実装しました。キャレットを表示する限りは機能しますが、上ボタンの機能をオーバーライドしてもメニューは開きます (アプリは戻って移動しますが、ドロワーも開きます)。
質問
つまり、簡単に言えば、私のレイアウト ルートがDrawerLayout
:
- 引き出しインジケータを「上」キャレットに置き換えます(一時的に次の方法で実行できます
mDrawerToggle.setDrawerIndicatorEnabled(false))
- キャレットがクリックされたときに引き出しが開かないようにし、代わりに独自の「上」機能でオーバーライドします
- 画面の端からドラッグしたときにドロワーが開かないようにします。
編集
ActionBarDrawerToggle
よし、どちらもANDをオーバーライドするとonOptionsItemSelected
、キャレットをクリックしてもメニューが開かないように見えます。ただし、端からドラッグすると開きます。ヘルプ!