web-dev-qa-db-ja.com

android-アプリアイコンをクリックしてナビゲーションドロワーを開きますか?

アプリでナビゲーションドロワー(画面の左側からスライドして開くナビゲーションの種類)を使用しています。さて、通常はアプリのアイコンをタップして開くこともできます。調べてみると、アクティビティに追加するコードがたくさん見つかりました。そして、単純なボタンのためだけに。それは私が探しているものではないと思いますか?そして、それが本当に1つのボタンに対して非常に多くのコードである必要がある場合、コードをより明確にするための最良の方法は何ですか?ありがとう、そしてそのようなAndroid newbであることをお詫びします。

14
Martin Hoffmann

@Kernaldが提案したようにActionBarDrawerToggleがすでにあると仮定すると、この問題にも遭遇しました。アクティビティに以下も追加する必要があります。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Pass the event to ActionBarDrawerToggle, if it returns
    // true, then it has handled the app icon touch event
    if (mDrawerToggle.onOptionsItemSelected(item)) {
      return true;
    }
    // Handle your other action bar items...

    return super.onOptionsItemSelected(item);
}

これにより、アクションバーのアイコンボタンを押すトグルハンドルを使用して、ドロワーをスライドさせます。

46
Rajiv Makhijani

必要なものはすべて、Googleの Navigation Drawer Guide に記載されています。基本的に、ActionBarで「アップ」アクションを有効にする必要があります。

getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);

次に、それをトグルにバインドする必要があります。

       mDrawerToggle = new ActionBarDrawerToggle(
                this,                  /* Host Activity */
                mDrawerLayout,         /* DrawerLayout object */
                R.drawable.ic_drawer,  /* nav drawer icon to replace 'Up' caret */
                R.string.drawer_open,  /* "open drawer" description */
                R.string.drawer_close  /* "close drawer" description */
                ) {

            /** Called when a drawer has settled in a completely closed state. */
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(mTitle);
            }

            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(mDrawerTitle);
            }
        };

        // Set the drawer toggle as the DrawerListener
        mDrawerLayout.setDrawerListener(mDrawerToggle);
7