4

У меня проблема с ActionBar в моем приложении; В некоторых сценариях ActionBar, похоже, попадает под панель уведомлений/заголовков. Он воспроизводится каждый раз, и я не могу понять, почему это происходит. Я использую приложение ZXING с Intents для сканирования штрих-кодов и возврата их в свое приложение, и в какой-то момент во время этого процесса возникает проблема.ActionBar под уведомлением/заголовком

Я думал, что было бы лучше показать вам проблему с картинками.

1: Начальный экран приложения, все нормально.

App home screen, no issues

2: Используйте этот пункт меню для сканирования штрих-кодов. Это выглядит так, как ожидалось.

Scan a product...

3: Страница продукта для отсканированного кажется нормальным. Если я нажмите кнопку 'Отмена', однако ...

Product page, all still normal. Press cancel...

4: ActionBar теперь пошел под уведомления/заголовка.

Home screen now shows the ActionBar under the notification/title bar

Единственное другое упоминание ошибки, например этого (что я могу найти) в этом вопросе GitHub для ActionBarSherlock (который я использую): https://github.com/JakeWharton/ActionBarSherlock/issues/602

Я проверил и я «Не делаю ничего странного с configChanges, как упоминает Джейк.

Эта проблема видна на моем устройстве 4.2.2, к сожалению, я не могу протестировать устройство до ICS.

Любые мысли или предложения приветствуются!

+0

Вы используете пользовательский ПЗУ? Если это обычная реализация, возможно, она не будет хорошо работать с ABS. –

+0

Я нахожусь на одном из своих телефонов (HTC One), но мой другой телефон (HTC Desire S) находится на складе, и у них обоих есть проблема. – Luke

+0

Я также предлагаю тестировать обычный код ActionBar (без библиотеки поддержки). Вы можете исключить библиотеку поддержки и/или ABS в этот момент. –

ответ

2

Я предполагаю, что он не будет возвращаться обратно, когда вы вернетесь с экрана zxing. В своей деятельности для «Лучше всего» попробуйте переустановить флаги окна для полноэкранного режима:

@Override 
protected void onResume() { 
    super.onResume(); 
    //getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setSystemUiVisibility(this, View.SYSTEM_UI_FLAG_VISIBLE /* SYSTEM_UI_FLAG_VISIBLE=0 */); 
} 



private static void setSystemUiVisibility(final Activity activity, final int newValue){ 
    if (activity.getWindow() != null){ 
     View v = activity.getWindow().getDecorView(); 
     if (v != null) { 
      try { 
       Method methodSetSystemUIVisibility = v.getClass().getMethod("setSystemUiVisibility", int.class); 
       methodSetSystemUIVisibility.invoke(v, newValue); 
      } catch (Exception noop) { 
      } 
     } 
    } 
} 
+2

Пробовал в обеих возможных затронутых действиях, проблема все еще присутствует. Интересная идея, хотя! – Luke

+0

попробуйте установить полноэкранный режим, а затем убрать его (я отредактировал ответ) – petey

+0

Все равно никаких изменений. :( – Luke

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