2015-06-20 2 views
2

Я создаю приложение с навигационным ящиком. Я хочу добавить к нему значок 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 в моем коде.

Экраны ниже.

Пустой скриншот экрана. enter image description here

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

enter image description here

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

+0

Если вы уверены, что новое изображение существует в вашей папке RES. Может быть, попробуйте \t Build> Clean Project? – sean

ответ

0

У вас есть DrawerLayout слушатель с ActionBarDrawerToggle? Если нет, пожалуйста, сложите эти:

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

Ofc, я сделал это. Я не упоминал весь код в своем вопросе. Я обновлю вопрос об этом. –

5

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

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

Как вы можете видеть v7 ActionBarDraweToggle есть другой конструктор и не просит для иконы. потому что он автоматически берется из ресурсов android.

+0

Я думаю, что это именно то, что мне нужно. Я использовал панель действий v4. Гектометр Вместо этого я добавил панель действий v7, и я получил пустой экран с текстом на нем. Я вижу значок ящика в верхнем левом углу, но нет панели действий и панели инструментов, даже если я пытаюсь ее открыть. Знаете ли вы, что может вызвать эту проблему? –

+0

Теперь вы застряли только с цветом. Затем просто перейдите по этой ссылке https://developer.android.com/training/material/theme.html и прочитайте ** Настройте цветовую палитру ** и примените свой цвет в файле стиля, например primaryColor и т. д. – Moinkhan

2

Вы можете сослаться на Creating a Navigation Drawer в 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 и панель инструментов.

+0

Я нашел тот же совет на другом веб-сайте. На самом деле, у меня уже есть этот код, и значок все еще не имеет анимации. Кроме того, я попробовал appcompat v7 drawer + toolbar, но застрял с добавлением библиотеки mikepenz для панели действий. Я не могу добавить эту lib в зависимость от моего проекта, поэтому nav drawer работает некорректно (но анимация значков работает :)). Знаете ли вы, есть ли пример андроида панели инструментов appcompat v7 +? Без библиотек и т.д. –

0

@Moinkhan - это право. Вам нужно заменить ваш конструктор с 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" 
); 

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

 Смежные вопросы

  • Нет связанных вопросов^_^