У меня есть приложение для Android, который производится с использованием фрагментовПоддерживать Immersive режим при DialogFragment показан
Я скрытие полос в верхней и нижней части моего экрана, используя следующий код.
@Override
protected void onResume() {
super.onResume();
isInBackground = false;
if(null == getFragmentManager().findFragmentById(R.id.content_container))
{
getFragmentManager().beginTransaction().add(R.id.content_container,new PresenterFragment(), PresenterFragment.FRAG_TAG).commit();
}
if(Build.VERSION.SDK_INT >=19)
{
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
}
});
}
}
Когда экранная клавиатура это показано бруски показать, что я могу жить с этим, как они скрываются, когда клавиатура dismissed.However если диалоговое фрагмент шоу в то время как мягкая клавиатура показана тогда, когда обе клавиатуры и фрагмент диалога отклоняется, они остаются в верхней части приложения.
Мои 3 вопросы
Можно ли остановить softkeyboard для изменения режима пользовательского интерфейса?
Возможно ли прекратить показ диалоговых окон DialogsFraments при изменении режима пользовательского интерфейса?
редактировать: Я использовал ниже код, чтобы увидеть, если клавиатура показана
public static boolean isKeyBoardShown(){
InputMethodManager imm = (InputMethodManager)currentActivity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isAcceptingText()) {
return true;
} else {
return false;
}
}
-> Я знаю, что есть работа вокруг диалогов в деятельности, но я не могу увидеть один или переделки код для работы в DialogFragment
Если не возможно, почему приложение застряло в неправильном режиме пользовательского интерфейса, когда есть как показанная клавиатура, так и DialogFrament?
Вы хотите, чтобы приложение всегда находилось в полноэкранном режиме и чтобы управлять, когда отображается мягкая клавиатура? –
Да, это правильно –
Я отправляю ответ –