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