Intereting Posts
Выполнение тестов блока Android в командной строке? Использование префикса пространства имен без андроида в дочерних элементах в макете Идеи для автоматизации Android Monkey SetTextViewText не обновляет виджет Использование макета ScrollViews в HorizontalScrollView EditText getHint () возвращает значение null при использовании библиотеки поддержки дизайна Ошибка установки из-за неверного URI? Устанавливается только в режиме отладки? Android: как добавить приложение в список «Поделиться через» для фотоаппарата Повторная инициализация ткани Twitter после долгого приложения для Android в режиме бездействия Интеграция сканера штрих-кодов Android с веб-страницей Передача контекста в качестве аргумента DialogFragment GSON: Ожидалась строка, но BEGIN_OBJECT? Android Studio Ошибка «reg» не распознается как внутренняя или внешняя команда Где и зачем добавлять репозитории на build.gradle Невозможно вставлять контакты Android в программное устройство Android

Отсутствует значок навигации после переключения с ICS ActionBar на панель инструментов Lollipop

У меня есть активность со многими фрагментами, в которых используется панель действий и навигационный ящик. У него включен режим «home as up». Я реализовал правильную логику, что только фрагменты верхнего уровня показывают значок переключателя панели действий, а другие фрагменты отображают стрелку. Я достиг этого:

mDrawerToggle.setDrawerIndicatorEnabled(false); mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mDrawerList); 

Теперь устаревшая библиотека поддержки v4 ActionBarDrawerToggle стала устаревшей. Я перешел на версию v7 ​​вместе с новой Toolbar чтобы получить внешний вид Material Design. После этого, когда ящик открыт, стрелка «вверх» отображается правильно, но когда выполняется вышеупомянутый код, он полностью исчезает.

Это ошибка в библиотеке поддержки, или мне нужно сделать что-то другое, чтобы показывать стрелку «вверх» вместо индикатора ящика?

Solutions Collecting From Web of "Отсутствует значок навигации после переключения с ICS ActionBar на панель инструментов Lollipop"

Вы пытались настроить getV7DrawerToggleDelegate().getThemeUpIndicator () индикатор с помощью getV7DrawerToggleDelegate().getThemeUpIndicator () и установить его после отключения индикатора?

Потому что, когда индикатор отключен, ActionBarDrawerToggle пытается установить предыдущий индикатор.

Из источника ActionBarDrawerToggle :

 public void setDrawerIndicatorEnabled(boolean enable) { if (enable != mDrawerIndicatorEnabled) { if (enable) { setActionBarUpIndicator((Drawable) mSlider, mDrawerLayout.isDrawerOpen(GravityCompat.START) ? mCloseDrawerContentDescRes : mOpenDrawerContentDescRes); } else { setActionBarUpIndicator(mHomeAsUpIndicator, 0); } mDrawerIndicatorEnabled = enable; } } 

Редактировать:

С getDrawerToggleDelegate().getThemeUpIndicator () устаревания ActionBarActivity вы должны использовать getDrawerToggleDelegate().getThemeUpIndicator ()

Ответ / комментарии Никола Деспотоски и Андрея Новикова совершенно правильны, но я хочу упомянуть, что после замены панели инструментов следующий код:

 drawerToggle.setDrawerIndicatorEnabled(false); drawerToggle.setHomeAsUpIndicator(getV7DrawerToggleDelegate().getThemeUpIndicator()); setSupportActionBar(toolbar); 

Ваша активность будет получать каждое событие onOptionsItemsSelected, даже если вы снова включите свой ящик в Google drawerToggle.setDrawerIndicatorEnabled (true); Поэтому вам нужно справиться с этим, я закончил с

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: if (drawerToggle.isDrawerIndicatorEnabled()) { return drawerToggle.onOptionsItemSelected(item); } else { onBackPressed(); return true; } default: return super.onOptionsItemSelected(item); } } 

Если вы используете AppCompatActivity, вы можете получить значок нужного ящика и задний значок

  if(homeUp) { getSupportActionBar().setDisplayHomeAsUpEnabled(false); mDrawerToggle.setDrawerIndicatorEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); } else { mDrawerToggle.setDrawerIndicatorEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mDrawerToggle.syncState(); } 

Без необходимости getV7DrawerToggleDelegate: D