Intereting Posts
Выключение мягкой клавиатуры Как прокрутить анимацию программно Как установить мое приложение для мобильных телефонов в Android Kitkat? Как получить серийный номер из Android Mobile Browser с использованием Java Scripting, который будет из источника веб-приложений, запущенного в мобильном браузере Вкладки вкладки в Android 4 с поддержкой библиотеки (ActionBarSherlock) CoordinatorLayout: Скрытие / отображение наполовину видимой панели инструментов? Выбор времени, показывающий время как 4: 7 вместо 04:07 Неожиданные разные результаты от того же ввода String Является ли хорошей практикой обернуть все макеты в CoordinatorLayout? Вложенные Recyclerview прокручиваются сами по себе Android – Как добавить пользовательский css на внешнюю веб-страницу в webview «Вызов этого из основного потока может привести к взаимоблокировке и / или ANR при получении accesToken» от GoogleAuthUtil (интеграция Google Plus в Android) Как добавить свой счетчик в ActionBar? Ошибки Facebook, связанные с auth.extendSSOAccessToken Использование инъекции зависимостей с помощью Roboguice?

Отсутствует значок навигации после переключения с 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