У меня есть ViewPager и FragmentPagerAdapter, созданный в одном действии с тремя фрагментами. Все фрагменты загружаются одновременно и хранятся в памяти, используя
mPager.setOffscreenPageLimit(2);
Один из этих фрагментов содержит предварительный просмотр камеры, который я хотел бы сделать в полноэкранном режиме, без строки состояния или панели действий. Остальные фрагменты требуют отображения панели действий.
Как мне сделать только полный фрагмент предварительного просмотра камеры, сохраняя при этом два других фрагмента? Я пробовал использовать темы, что означает разрыв панели действий.
Программный вызов следующего не помогает, потому что он заставляет всю активность быть полноэкранным (и, следовательно, двумя другими фрагментами вместе с ней):
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
Я также попытался реализовать ViewPager.OnPageChangeListener:
public void onPageSelected(int position) {
if(position == 1)
getActionBar().hide();
else
getActionBar().show();
}
Это скрывает панель действий, но она не скрывает строку состояния системы (я говорю о том, где отображаются уведомления, значки состояния и время), а также экранирование скрытой/шоу-панели действий также очень изменчиво при прокрутке.
Для примера того, что я хочу сделать точно, см. Snapchat - им удастся полностью очистить прокрутку между камерой и другими фрагментами.
Редактировать:
Поэтому я изменил свой onPageSelected на это:
public void onPageSelected(int position) {
if(position == 1) {
MainActivity.this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
MainActivity.this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
} else {
MainActivity.this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
MainActivity.this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
}
}
Это позволяет мне изменять отображение строки состояния или нет. Тем не менее, это вызывает большое количество битков. Такая же проблема с панелью действий.
Я заметил, что в Snapchat строка состояния скользит вверх и вниз после завершения изменения вкладок. Я не уверен, как это реализовать, поэтому любые советы по этому аспекту будут оценены.