Подтвердить что ты не робот

Значок навигационного ящика не отображается (панель действий Шерлока)

У меня есть панель навигации, работающая с панелью инструментов sherlock, но мне не удается получить значок 3 строки (например, gmail) вместо обычной кнопки "<". Вот мой код ic_drawer - это значок 3 строки, который gmail использует

getSupportActionBar().setIcon(R.drawable.myIcon);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowTitleEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer,
            R.drawable.ic_drawer, R.string.menu_open, R.string.menu_close) {
        public void onDrawerClosed(View view) {

            super.onDrawerClosed(view);
        }

        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
        }
    };
4b9b3361

Ответ 1

Это решение сработало для меня и показало значок ящика по умолчанию во всей версии. Добавьте SherlockNavigationDrawer библиотеку отсюда https://github.com/nicolasjafelle/SherlockNavigationDrawer к вашему проекту. И измените свой код, как показано ниже:

SherlockActionBarDrawerToggle mDrawerToggle = new SherlockActionBarDrawerToggle(this,mDrawerLayout,
   R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
   public void onDrawerClosed(View view) {
       super.onDrawerClosed(view);
   }
   public void onDrawerOpened(View drawerView) {
       super.onDrawerOpened(drawerView);
   }
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);

Ответ 2

Пробовали ли вы реализовать метод:

    mDrawerToggle.syncState();

В прошлом это работало для меня.

Ответ 3

Хотя я догадываюсь, что вы, должно быть, сработали, просто хотел отправить ответ:

Измените код на следующее:

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer,
        R.drawable.ic_drawer, R.string.menu_open, R.string.menu_close) {
    public void onDrawerClosed(View view) {

        super.onDrawerClosed(view);
    }

    public void onDrawerOpened(View drawerView) {
        super.onDrawerOpened(drawerView);
    }
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.myIcon);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);

По существу, параметры ActionBar, которые вы устанавливаете в коде, должны быть установлены после завершения DrawerToggle, а не раньше.

Ответ 4

Сначала вы можете посмотреть этот. Существует один ответ: "Вы можете изменить значок в теме

<item name="android:homeAsUpIndicator">@drawable/action_arrow</item>

Но я думаю, что вы хотите реализовать Навигационный ящик, поэтому читайте об этом.

Ответ 5

Что вы можете сделать, так это создать стиль, как показано ниже:

 <style name="AppTheme" parent="Your Theme name">
        <item name="homeAsUpIndicator">@drawable/ic_drawer</item>
 </style>

И в манифесте Android примените эту тему следующим образом:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
</application>

Это решит проблему, получив значок 3 строки.

Ответ 6

Вы добавили переключатель в свой ящик?

mDrawerLayout.setDrawerListener(mDrawerToggle);

Ответ 7

Это происходит, когда вы запускаете свое приложение в Android < 3, даже приложения Google страдают от этого тоже.

Но есть проект, чем решить это: https://github.com/nicolasjafelle/SherlockNavigationDrawer

Ответ 8

Я вставляю это, и он работает.

    @Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}

Ответ 9

@zudo1337 метод решил мою проблему.

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}

Ответ 10

Я добавил эту строку перед вызовом setDrawerListener.

mDrawerLayout.post(new Runnable() {
@Override public void run() {
 mDrawerToggle.syncState();
}
});

Надеемся, что это устранит проблему на более низких устройствах.

Ответ 11

Возможно, это сработает...

in onCreateOptionMenu раздувает ваш макет меню getSupportMenuInflater(). inflate (R.menu.action_bar_menu, menu);