Почему при использовании ящика навигации отображается неверный значок?

Я строю приложение с навигационным ящиком. я хочу добавить ic_drawer значок к нему. Я использую это для этого:

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 */
) { ... }

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

На самом деле, я получил неправильный значок, а также у меня нет анимации. Как я могу это исправить? Я не могу ничего найти, кроме drawable.ic_drawer в моем коде.

Экраны ниже.

Скриншот пустого экрана.

Открыт экран меню.

Вы можете увидеть на обоих изображениях, что это не так ic_drawer образ. На самом деле, в IDEA, я вижу правильное изображение.

4 ответа

Убедитесь, что вы используете v7 ActionBarDrawerToggle

mActionBarDrawerToggle = new ActionBarDrawerToggle(
        this, your_drawer_layout, your_tool_bar, R.string.open, R.string.close
);

Как вы можете видеть, v7 ActionBarDraweToggle имеет другой конструктор и не запрашивает ваш Icon. потому что это берет автоматически от ресурсов Android.

Вы можете сослаться на Создание ящика навигации в Android Developer.

Мало кто пропустит этот код ниже. но код очень важен, чтобы показать правильный значок.
Я надеюсь, что вы читаете больше ссылок.

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

если вы используете последнюю версию SDK, вы можете использовать compat-v7 и панель инструментов.
Я испытал значок бургера не показывать. поэтому мне нужен другой путь.
наконец решена с помощью compt-v7 и панели инструментов.

Вы добавили DrawerLayout слушатель с вашим ActionBarDrawerToggle? Если нет, пожалуйста, сложите это:

mDrawerLayout.setDrawerListener(mDrawerToggle);//mDrawerLayout is DrawerLayout

@ Мойнхан прав. Вам нужно заменить ваш конструктор с v4 на новый с v7. Заменить этот старый код:

mDrawerToggle = new ActionBarDrawerToggle(
    getActivity(),                    
    mDrawerLayout,                    
    R.drawable.ic_drawer,
    "Open drawer",  
    "Close drawer"
)

для этого

import android.support.v7.app.ActionBarDrawerToggle;

(удалить старый импорт из.v4.app.ActionBarDrawerToggle)

mDrawerToggle = new ActionBarDrawerToggle(
    getActivity(), 
    mDrawerLayout, 
    "Open drawer", 
    "Close drawer"
);

Теперь он должен отображать анимированный значок ящика, который превращается в стрелку влево при расширении

Другие вопросы по тегам